Android學習(一)

學號 20189214 《Android程序設計》第六週學習總結

教材學習內容總結

Android stdio 結構

  • .idea:AS生成的工程配置文件,相似Eclipse的project.properties。
  • app:AS建立工程中的一個Module。
  • gradle:構建工具系統的jar和wrapper等,jar告訴了該工程如何與系統安裝的gradle構建聯繫
  • build:構建目錄
  • libs:依賴包,包含jar包和jni等包。
  • src:源碼
  • main:主文件夾
  • java:Java代碼,包含工程和新建是默認產生的Test工程源碼。
  • res:資源文件
  • layout:App佈局及界面元素配置
  • menu:App菜單配置
  • values:
  • dimens.xml:定義css的配置文件。
  • strings.xml:定義字符串的配置文件。
  • styles.xml:定義style的配置文件。
  • ......:arrays等其餘文件。
  • ......:assets等目錄
  • AndroidManifest.xml:App基本信息(Android管理文件)
  • ic_launcher-web.png:App圖標
  • build.gradle:Module的Gradle構建腳本css

    res目錄結構

    res目錄下全部的資源文件都會在R.java文件下生成對應的資源id,咱們能夠直接經過資源id訪問到對應的資源;這個R文件能夠理解爲字典,res下每一個資源都都會在這裏生成一個惟一的id。html

  1. 圖片資源
  2. 佈局資源
  3. 菜單資源
  4. values目錄
  5. raw目錄(原生資源)
  6. 動畫java

    活動

  7. Android程序邏輯和視圖分離,每一個活動都能對應一個佈局。
  8. 全部的活動都要在AndroidManifest.xml中進行註冊才能生效,主活動還須要在標籤內加入
  9. Intent是Android程序中各組件之間進行交互的一種重要方式,不只能夠知名當前組件想要執行的動做,還能夠在不一樣組件之間傳遞數據。分爲顯式Intent和隱式Intent。android

    Intent和onSaveInstanceState()方法同樣,結合Bundle對象能夠來傳遞數據。web

Android的活動機制

  1. Android在默認狀況下,每當啓動一個新的活動,它會在返回棧中入棧,並處於棧頂的位置。
  2. 每當按下Back或調用finish()方法銷燬活動時,處於棧頂的活動會出棧。
    每一個活動都有如下四種狀態:
  3. 運行狀態
  4. 暫停狀態
  5. 中止狀態
  6. 銷燬狀態編程

    平常使用時,當切換一些應用的過程,有時會有一些應用自動返回到初始狀態。其緣由就是應用處於中止狀態,這種活動保存相應的狀態和成員變
    量。但當其餘地方須要內存時,這些活動因爲內存不足會被系統回收。當Back回來的時候,執行onCreate()而不是onRestart()方法。app

Activity類中定義了7個回調方法,覆蓋活動週期的每個環節。可將活動分爲3種生存期。ide

  • 完整生存期(onCreate,onDestroy)
  • 可見生存期(onStart,onStop)
  • 前臺生存期(onResume,onPause)
    Android官方活動生命週期示意圖:

UI

  1. android:icon ="@drawable/ic_launcher" 的含義是引用了位於res/drawable目錄下一個drawable對象。
  2. android:id是元素的惟一標識符,wrap_contentbiao表示當前元素的高度只要能包含裏面的內容就行。
  3. ViewGroup是一個特殊的視圖,它能夠包含其餘的視圖,能夠在一個佈局文件中聲明佈局,或者在運行時經過編程添加布局。好比:LinearLayout(線性對齊),RelativeLayout(相對佈局),FrameLayout,TableLayout(行列布局),GridLayout(柵格佈局)。
  4. Toast是一個小的彈出對話框,用於顯示一條消息做爲給用戶的反饋,而且不會替代當前的活動。
  5. AlertDiglog是一個爲用戶提供反饋的窗口。與Toast不一樣的是會一直顯示,直到失去焦點。
  6. LayoutInflater的做用相似於findViewById()。不一樣點是LayoutInflater是用來找res/layout/下的xml佈局文件,而且實例化;而findViewById()是找xml佈局文件下的具體widget控件(如Button、TextView等)。函數

    一、對於一個沒有被載入或者想要動態載入的界面,都須要使用LayoutInflater.inflate()來載入;
    二、對於一個已經載入的界面,就可使用Activiyt.findViewById()方法來得到其中的界面元素。工具

    監聽器

接口 方法
OnClickListener OnClick()
OnLongClickListener OnLongClick()
onFocusChangeListener OnFocusChange()
OnKeyListener OnKey()
OnTouchListener OnTouch()

一旦建立一個監聽器接口的實現,能夠將其傳遞給你想要監聽的視圖的相應的setOnXXXListener方法,其中XXX是事件名稱。

實現監聽器有四種方式:

  1. 使用匿名內部類的方式實現監聽

    b1.setOnClickListener(new OnClickListener(){

    @Override  
         public void onClick(View v) {  
             // TODO Auto-generated method stub  
             Intent intet = new Intent(MainActivity.this,seekbar.class);  
             startActivity(intet);  
             //finish();  
         }  
    
     });
  2. 使用外部類的方式實現監聽事件
  3. 使用接口方式實現監聽事件
  4. 直接綁定到標籤

教材學習中的問題和解決過程

問題1:Android中Activity和AppcompatActivity的區別
問題1解決方案:AppcompaActivity相對於Activity的主要的兩點變化:

  1. 主界面帶有toolbar的標題欄;
  2. theme主題只能用android:theme=」@style/AppTheme (appTheme主題或者其子類),而不能用android:style。 不然會提示錯誤: Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

代碼調試中的問題和解決過程

  • 問題1:多活動Toast顯示不出
  • 問題1解決方案:一個控件只能有一個Listener,若是綁定多個點擊事件,前面的事件會被覆蓋。

代碼託管

上週考試錯題總結

問題1:下面代碼中共有()個線程?

public class ThreadTest {
    public static void main(String args[]){
    MyThread myThread =new MyThread();
    Thread t1=new Thread(myThread);
    Thread t2=new Thread(myThread);
    t1.start();
    t2.start();
        }
    }
    class MyThread extends Thread {
     ...
    }

問題1解決方案:主函數也算一個線程,全部一共三個線程。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 150/200 2/2 20/20
第二週 200/400 1/3 20/40
第三週 100/500 1/4 10/50
第四周 200/700 1/5 15/65
第五週 1486/2186 1/6 15/80
第六週 1400/3586 1/7 18/98
  • 計劃學習時間:15小時

  • 實際學習時間:18小時

參考資料

相關文章
相關標籤/搜索