如何玩轉Android studio,玩轉Android Studio是怎樣的一種體驗?

1、已被Android Studio虐了好幾天,天天都被弄的虛脫。到現在為止也沒有把AS的最基本的操作相關的概念弄懂。看了很多所謂的Android Studio教程,說兩個在比較系統的:(1)Studio教程 - Android Studio 安卓開發者社區(2)Android Studio系列教程二--基本設置與運行,等其他的一些教程。但感覺這些寫的都不痛不癢,沒有深入地從一個用過Eclipse過渡到AS所存在的操作思維習慣來講解如何使用AS。

Eclipse VS Android Studio在操作層面到底有哪些區別?如何進行正確的AS操作,玩得跟Eclipse一樣,最起碼使用起來沒有恐懼感。

2、上面兩教程等網上其他的一些也都這麼說,Eclipse中的workspace==Android Studio中的project,Eclipse中的project==Android Studio中的Module.那問題就來了。我在9GAG(project)導入了另外兩個Module:(1)iAppPDFMobile;(2)ToggleButtonSample.其他的兩個是各自對應的包。為什麼我不能執行ToggleButtonSample.Android Studio是否可以像Eclipse一樣在一個窗口中顯示多個App所對應的代碼。

3、Eclipse導出項目到Android Studio,包括google官網也說,導入的時候改這樣選擇如圖(select *uild.gradle,do not import Eclipse Project itself):

那這樣的話又存在一個問題,假如你在Eclipse下的 一個工作空間workspace裡面有很多project,那你導入到Android Studio的時候,就會有很多無關Module。改如何處理?

4、踏入搬磚行列不足四月,懇請各位Android界知乎老師幫忙解答一下疑惑。真的萬分感謝!


說一下Android Studio最贊、也是用了大半年來體會最深的地方的幾個地方吧

  • 豐富的模板

各種Activity、Fragment、Custom View模板等等,比如:

    • 新建的Activity會自動在manifest.xml裡面註冊、自動添加menu等。(其實LoginActivity很不錯的,能省去很多編碼時間,然而在國內並沒有什麼卵用)
    • New -&> UI Component -&> Custom View,AS會為你提供一套完整的Custom View模板
    • /**
      * TODO: document your custom view class.
      */
      public class MyView extends View {
      .......
      public MyView(Context context) {
      super(context);
      init(null, 0);
      }

      public MyView(Context context, AttributeSet attrs) {
      super(context, attrs);
      init(attrs, 0);
      }

      public MyView(Context context, AttributeSet attrs, int defStyle) {
      super(context, attrs, defStyle);
      init(attrs, defStyle);
      }

      private void init(AttributeSet attrs, int defStyle) {
      // Load attributes
      final TypedArray a = getContext().obtainStyledAttributes(
      attrs, R.styleable.MyView, defStyle, 0);

      ....

      mExampleDimension = a.getDimension(
      R.styleable.MyView_exampleDimension,
      mExampleDimension);

      if (a.hasValue(R.styleable.MyView_exampleDrawable)) {
      mExampleDrawable = a.getDrawable(
      R.styleable.MyView_exampleDrawable);
      mExampleDrawable.setCallback(this);
      }

      a.recycle();

      // Set up a default TextPaint object
      mTextPaint = new TextPaint();
      mTextPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
      mTextPaint.setTextAlign(Paint.Align.LEFT);

      // Update TextPaint and text measurements from attributes
      invalidateTextPaintAndMeasurements();
      }

      private void invalidateTextPaintAndMeasurements() {
      mTextPaint.setTextSize(mExampleDimension);
      mTextPaint.setColor(mExampleColor);
      mTextWidth = mTextPaint.measureText(mExampleString);

      Paint.FontMetrics fontMetrics = mTextPaint.getFontMetrics();
      mTextHeight = fontMetrics.bottom;
      }

      @Override
      protected void onDraw(Canvas canvas) {
      super.onDraw(canvas);

      // TODO: consider storing these as member variables to reduce
      // allocations per draw cycle.
      int paddingLeft = getPaddingLeft();
      int paddingTop = getPaddingTop();
      int paddingRight = getPaddingRight();
      int paddingBottom = getPaddingBottom();

      int contentWidth = getWidth() - paddingLeft - paddingRight;
      int contentHeight = getHeight() - paddingTop - paddingBottom;

      // Draw the text.
      canvas.drawText(mExampleString,
      paddingLeft + (contentWidth - mTextWidth) / 2,
      paddingTop + (contentHeight + mTextHeight) / 2,
      mTextPaint);

      // Draw the example drawable on top of the text.
      if (mExampleDrawable != null) {
      mExampleDrawable.setBounds(paddingLeft, paddingTop,
      paddingLeft + contentWidth, paddingTop + contentHeight);
      mExampleDrawable.draw(canvas);
      }
      }

      .......
      }

  • 強大的快捷鍵
    • 記住幾個常用的快捷鍵就可以輕鬆自如地玩轉AS,比如(在Mac下):
      • alt + Enter -- import class
      • cmd + N -- generate code
      • cmd + shift + F6(有點蛋疼)-- rename
      • cmd + F -- search
  • Design Preview 一邊寫布局一看實際效果
  • 屌炸天的反彙編能力,得益於IDEA
  • 使用Gradle構建項目
    • 一句話導入第三方庫
    • 各項配置也超級方便
    • 最近發現AS可以方便地導入常用的第三方庫了,只需要在列表中選擇你想要的庫就行了,再也不用去各處複製了!!!

  • Android Studio 1.3 Preview 支持直接把ADT項目(包括其依賴的其他ADT項目)導入成AS項目。當然不僅僅是這一點,如圖:


的確,對於剛從Eclipse 切換過來的,一時半會會有很多不適應的,很多東西都不一樣,導入一個項目都出一大堆錯誤。現在關於Android Studio 的教程,都是很熟悉Android Studio 的人來寫的,他是以自己熟悉的狀態來寫的教程,所以很難理解剛切換過來的人的苦衷。

好吧,上面說多了,切入正題。

首先保證你已經安裝好了Android Studio,如果沒有安裝,可以看我寫的文章:

Android Studio 入門指南

對於一個初學者,我是不建議一上來就導入一個很大的項目,想要熟悉,那就從新建一個小的項目,然後開始熟悉。

熟悉項目結構

一個Project 創建後,大概的文件目錄就是這樣的。

在Android Studio:

  • 每個Project(AndroidStudioTesting),相當於Eclipse 的WorkSpace;

  • 每個Module(上圖的app 目錄)相當於Eclipse 的Project。

  • settings.gradle: 每個Moudle 要在這裡註冊(Project 目錄)
  • build.gradle:每個Project 的配置(Project 目錄)
  • app:每個Module
  • app/build.gradle:每個Module 配置文件,比如依賴的類庫,SDK 版本
  • app/src/:源碼和資源文件都在這裡(我們寫的文件都在這裡面)。
  • app/libs/:添加類庫(Jar 包)。

操作上的改變

全局設置:File --&> settings

Project 設置:File --&> Project Structure

未完。


謝邀。

我推薦題主先去看完googdev的系列教程,這樣的話對AndroidStudio會有一個比較正確的認識,對gradle這套構建系統也會有所認識。

針對題主的疑問,AS一般只會見一個可以運行的主Module,其他一般都是library,在對應的gradle文件中可以看到應用的Android插件是application還是library。其實我覺得絕大部分eclipsw項目也是類似的結構。當然項目結構其實和IDE關係也不大,主要看你使用的構建系統哈。比如maven或者gradle。

手機碼字,先答這麼多,不知道是否有幫助


至今裡面的gradle還沒玩轉,操作的話,就ctrl+shift+a,快捷鍵中的快捷鍵


謝邀。。

最近在折騰其他問題的時候抽空玩了下。

就是一個問題:

JNI如何添加。。。哇靠,真的沒搞定啊。

好幾個星期沒能開心的碼了,純吐槽下。


先回答題主的一些問題:

Eclipse VS Android Studio在操作層面到底有哪些區別?如何進行正確的AS操作,玩得跟Eclipse一樣,最起碼使用起來沒有恐懼感。

在看別人寫的東西的同時,很多東西還是得自己去悟(多動手操作,自己去實際動手去感受下as和eclipse的區別)。我自己的經歷是:我最開始搞java用的也是eclipse,曾經有那麼一次遇到過idea沒怎麼上心還是放不下eclipse。前兩年到現在這家公司後有項目組的同事在用idea,當時還是很不屑(因為自己不在那項目組,可以不用)。但是嘴上雖然說不要,身體還是很誠實的(自己平時沒事的時候也下載了idea自己倒騰)。我當時做的事情就是按照做一個Java Web的項目方式在idea裡面自己去搞一遍,如:

  • 怎麼用idea創建一個java web項目(相關的一些第三方包怎麼配置等);
  • 怎麼在idea裡面加入tomcat;
  • 怎麼在tomcat裡面加入web工程並啟動;
  • 怎麼在idea裡面調試;
  • 怎麼在idea裡面打包、發布一個web項目;
  • 怎麼導入一個已存在的由idea創建的web項目;
  • 怎麼導入一個已存在的由eclipse創建的web項目到idea裡面;
  • 怎麼在idea裡面進行一些常用的設置,如:jdk、字體、項目編碼、快捷鍵 等;
  • 一個團隊裡面不同的人使用不同的ide有沒有可能在一份代碼裡面協同開發,要怎麼來搞;

等等...

當時也很感謝 @youmeek 博主寫的關於idea的系列教程,讓自己能很快上手。有需要的同學也可以看下IntelliJ IDEA專講

上面說的這些我感覺就是我平時在做java web開發中經常會用到的。當我在使用idea這個新的開發工具時我把這些常用到的都做一遍了解清楚了,那麼在這個新的開發工具中我也就具備了基本的生存能力,我相信自己的恐懼也會少一些。上面說的這些不需要再替換成android了吧。

下面再來說說具體你提的幾個as的問題吧:

為什麼我不能執行ToggleButtonSample.Android Studio是否可以像Eclipse一樣在一個窗口中顯示多個App所對應的代碼。

這個是可以的就象你提到的

Eclipse中的workspace==Android Studio中的project,Eclipse中的project==Android Studio中的Module

你把需要導入的多個App象Module一樣導入到同一個project就好了。需要注意的:

  • 導入的module需要是gradle的工程,我沒試過直接把一個eclipse的project當成as 的module導入會是什麼效果。

  • 作為一個app如果依賴一些jar包或者其它模塊也是需要一併導入的,當然如果其它模塊也是eclipse的project也先轉換成gradle的工程再導入吧。

我能想到的要比較注意的就這兩點,實際過程中可能還有其它什麼異常、錯誤之類的再見招拆招吧。

對了看了你這張圖再說點小訣竅吧。看你這張圖(可能你現在的工程正處在build狀態吧)如果是一個比較正常的工程,至少是build通過的工程,不同類型的module圖標是不一樣的。應該象下面這樣(常用的兩類):

所以看你截圖的模塊圖標感覺有點怪。最後一個問題:

那這樣的話又存在一個問題,假如你在Eclipse下的 一個工作空間workspace裡面有很多project,那你導入到Android Studio的時候,就會有很多無關Module。改如何處理?

最近這兩天用了一下eclipse將原來的工程轉成gradle的,發現你說的這個問題其實應該不是問題,只是導出project時選擇的問題。如果你在選擇導出的project時選擇多個那麼就會按照gradle裡面的多模塊生成gradle配置文件(對應as就象是一個as的project,所以你會覺得有些無用的module),如果你選擇一個project那麼就不會按多模塊生成gradle配置就只會生成單模塊的配置(對應as就象是一個module)。下面是我自己的一些截圖,你可以再嘗試下根據不同的操作看生成的配置信息是否有差異

就是最後這張選擇的時候,根據選擇的是一個project還是多個project會有差異,自己觀察下吧。

希望上面說的對你有所幫助,多自己動手操作慢慢的時間長了自然就玩得轉了,熟能生巧嘛,還有就是要注意觀察、多類比。如果把在eclipse裡面android的相關操作,在as裡面也好好的做一遍,我相信你就已經能基本完轉了吧。


你會獲得一個成就 ---- 翻牆達人

話說,沒梯子的話, 安裝都會出問題


使用android studio的體驗好太多,更喜歡這個界面,更多的方便工具的內置集成,基於gradle的構建工具,內存,cpu使用的查看工具等,都是非常棒的。更何況谷歌親自開發。

如果玩轉,很簡單啊,去學一下gradle的使用啊,多用studio進行開發,何況你才剛剛如坑4個月,等到一年的時候應該可以很熟了吧。

studio是趨勢,趕緊用起來吧。

IDE也只是工具,幫助你更快的開發而已。

PS:暫時這樣,有空繼續填坑。


eclipse卡成狗了,我覺得我要轉android studio試試。


樓上很多答案都回答的比較到位,我補充一下題主在as上遇到的問題的解決方案。

首先是理解方面,android studio中project相當於是eclipse的workplace,而eclipse的workplace作用是:存放各個項目,以及保存eclipse的一些環境設置。但是題主的做法是將eclipse的整個workplace導入進來,這種做法並不推薦。因為eclipse的環境設置完全跟as不搭邊,意義不大。推薦的項目導入姿勢是在as中新建一個project用來存放各個項目,然後以導入moudle的形式將eclipse的項目導入進來,導入途中無腦下一步即可,最後按下finish就OK了。

以這個姿勢作為導入的姿勢為前提,再來解答題主的3個As使用中問題:

1 導入後ToggleButtonSample項目無法編譯,因為as是通過gradle來編譯項目的,這說明該項目的gradle編譯不通過,一般在as的下方會有提示告訴你編譯錯誤的原因是什麼,對照錯誤的原因,然後打開ToggleButtonSample項目的build.gradle文件去修改。下圖中我列出了導入時常見的錯誤

2 可以分開窗口查看代碼,當打開多個類文件時,對某個類文件右鍵一下,在彈出菜單中選擇Split Vertically活Split Horizontally。如圖

3 採用上述姿勢導入項目時,將不會產生多餘項目的問題。

4 如果有其他使用as時碰到的問題,可以私信我。


求如何修改moudle名稱?我每次修改完,重啟as後就會報錯:

Unsupported Modules Detected: Compilation is not supported for following modules: test. Unfortunately you can"t have non-Gradle Java modules and Android-Gradle modules in one project.

然後就自動又變回原來的名字了。鬱悶!


你非要用projects視圖我也沒辦法,換成Android視圖,看看是不是清爽很多?


module相當於library,其中名字為app的module相當於原來的project,他們的集合是android studio中的project,從文件結構上來說,就是一個project文件夾下有很多個module,這樣的好處是一個項目一個文件夾,不會弄混了


正常情況下,從eclipse導出gradle再導入studio會自動幫你配置好環境。

至於多個model的情況我沒試過,一般一個project一個窗口顯示的。


國內相關資源豐富程度不高,國外用得比較充分肯定,所以有些教程也是說得比較淺,相關資源也相對零碎,流行起來也就最近的事。

我接觸雖然也有快一年了,也算是eclipse轉來的吧,但個人行事散漫,用得比較少(非專業的)。

現在導入eclipse工程比以前智能多了,以前僅僅是導入還是為eclipse工程,現在直接改變工程結構了,改變依賴之類的了,只是沒完全徹底,但變化很大,也好很多。

對於像eclipse多個工程(eclipse project)列一列,貌似是沒有了,個人覺得這樣更好一點,單個窗口,單個工程(AS project),專一~

手機簡單碼的幾個字,好像對問題沒什麼幫助,不好意思:)


推薦閱讀:

如何從eclipse轉入android studio,感覺Gradle什麼的很難理解的。有什麼教程嗎?
「安卓開啟USB調試後大量耗電」的說法正確嗎?
可以通過修改手機基帶來收發自定義信號嗎?
Android 關機為什麼不能啟動鬧鐘?
同一個App,Android版本的開發周期是否要比iOS版本的長一些?為什麼?

TAG:Android開發 | Eclipse | Android | Gradle |