如何玩轉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會自動在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 --&> settingsProject 設置: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)。下面是我自己的一些截圖,你可以再嘗試下根據不同的操作看生成的配置信息是否有差異
你會獲得一個成就 ---- 翻牆達人
話說,沒梯子的話, 安裝都會出問題使用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版本的長一些?為什麼?