一點一點學安卓

---恢復內容開始---html

 

2017-09-08java

寫在前面android

新的學年要開始作項目準備畢業了 是AR全新的領域 可是要在安卓手機上作 因此java和安卓就是必不可少的瀏覽器

要努力學習安卓呀app

 

Activityide

setContentView()方法來給當前的活動加載一個佈局
佈局

Toast在程序中能夠將一些短小的消息提供給用戶,這些消息一會之後會自動消失,須要定義一個彈出Toast的觸發點。經過靜態方法makeText()建立一個Toast對象,而後調用show()makeText()參數,第一個是context,第二個是Toast顯示的文本內容,第三個參數是Toast現實的時長學習

findViewById()獲取到在佈局文件中定義的元素,它返回的是一個view對象,所以咱們須要向下轉型成別的對象this

setOnClickListener爲按鈕註冊一個監聽器,點擊按鈕時就會執行監聽器中的onclick()方法spa

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);

        Button button1 = (Button)findViewById(R.id.button_1);
        button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Toast.makeText(FirstActivity.this,"你點了Button1",Toast.LENGTH_LONG).show();
            }
        });
    }

menu

在rec中創建menu文件夾,而後menu resource file

<item>添加菜單項

重寫onCreateOptionsMenu(),經過getMenuInflater()方法可以獲得MenuInflater對象,再調用它的Inflater()方法就能夠給當前活動建立菜單

inflate()方法接收兩個參數,第一個參數用於指定咱們經過哪個資源文件來建立菜單,第二個參數用於指定咱們的菜單項添加到哪個Menu對象中

public boolean onCreateOptionsMenu(Menu menu) {
        //return super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.main,menu);
        return true;
    }

定義菜單響應事件

onOptionsItemselected()方法中,經過調用item.getItemId()來判斷咱們點擊的是哪個菜單項,而後給每一個菜單項加入本身的邏輯處理

finish()能銷燬當前的活動

Intent是Android程序中各組件之間進行交互的一種重要方式,它不只能夠指明當前組件想要執行的動做,還能夠在不一樣組件之間傳遞數據。intent有顯式和隱式

關於一篇將intent和intentfilter很好的文章

更好的一篇

Intent(Context packageContext, Class<?> cls) ,第一個參數Context要求提供一個啓動活動的上下文,第二個參數Class則是指定想要啓動的目標活動,經過這個構造就能夠構建粗Intent的意圖

Activity類中提供了一個startActivity()方法,這個方法是專門用於啓動活動的,它接收一個Intent參數

隱式Intent

不明確指出咱們想要啓動哪個活動,而是指定了一系列更爲抽象的action和category等信息,而後交由系統去分析這個Intent,並幫咱們找出合適的活動去啓動。

intent解析機制主要是經過查找已註冊在AndroidManifest.xml中的全部IntentFilter及其中定義的Intent,最終找到匹配的Intent

在 AndroidManifest.xml

<activity android:name=".SecondActivity">
            <intent-filter>
                <action android:name="com.example.rebeccafan.myapplication.ACTION_START"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
 public void onClick(View v){
                //Toast.makeText(FirstActivity.this,"你點了Button1",Toast.LENGTH_LONG).show();
                //Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                Intent intent =new Intent("com.example.rebeccafan.myapplicaiton.ACTION_START");
                startActivity(intent);
            }

使用隱式intent,咱們不只能夠啓動程序內的活動,還能夠啓動其餘程序的活動

public void onClick(View v){
                //Toast.makeText(FirstActivity.this,"你點了Button1",Toast.LENGTH_LONG).show();
                //Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                //Intent intent =new Intent("com.example.rebeccafan.myapplicaiton.ACTION_START");
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("http://www.pornhub.com"));
                startActivity(intent);

指定了Intent的action是Intent.ACTION_VIEW,這是一個Android系統內置的動做,其常量值爲android.intent.action.VIEW

 

<activity android:name=".ThirdActivity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="http"/>
            </intent-filter>
</activity>

經過android:scheme 指定了數據的協議必須是http協議,這樣ThirdActivity應該就和瀏覽器同樣,可以響應一個打開網頁的Intent

Intent還能夠在啓動活動的時候傳遞數據

putExtra()能夠把咱們想要傳遞的數據暫存在Intent中,啓動了另外一個活動後,只須要把這些數據從Intent中取出就能夠

經過getIntent()方法獲取到用於啓動SecondActivity的Intent,而後調用getStringExtra()方法來獲取傳遞的數據

活動的生命週期

一個任務就是一組存放在棧裏的活動的集合

活動狀態:

1.運行狀態

2.暫停狀態

3.中止狀態

4.銷燬狀態

Activity中提供了一個onSaveInstanceState()方法會攜帶一個Bundle類型的參數,Bundle提供了一系列方法用於保存數據(putString() putInt())

Layout

andorid: id是給當前的元素定義一個惟一的標識符,以後能夠在代碼中對這個元素進行操做

在xml中定義一個id,@+id/id_name 引用一個id @id/id_name

andorid:layout_width指定了當前元素的寬度 match_parent 表示讓當前元素和父元素同樣

andorid:layout_height指定了當前元素的高度 wrap_content 表示當前元素恰好包含裏面的內容

andorid:text指定了元素中顯示的文字內容

---恢復內容結束---

 

2017-09-08

寫在前面

新的學年要開始作項目準備畢業了 是AR全新的領域 可是要在安卓手機上作 因此java和安卓就是必不可少的

要努力學習安卓呀

 

Activity

setContentView()方法來給當前的活動加載一個佈局

Toast在程序中能夠將一些短小的消息提供給用戶,這些消息一會之後會自動消失,須要定義一個彈出Toast的觸發點。經過靜態方法makeText()建立一個Toast對象,而後調用show()makeText()參數,第一個是context,第二個是Toast顯示的文本內容,第三個參數是Toast現實的時長

findViewById()獲取到在佈局文件中定義的元素,它返回的是一個view對象,所以咱們須要向下轉型成別的對象

setOnClickListener爲按鈕註冊一個監聽器,點擊按鈕時就會執行監聽器中的onclick()方法

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);

        Button button1 = (Button)findViewById(R.id.button_1);
        button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Toast.makeText(FirstActivity.this,"你點了Button1",Toast.LENGTH_LONG).show();
            }
        });
    }

menu

在rec中創建menu文件夾,而後menu resource file

<item>添加菜單項

重寫onCreateOptionsMenu(),經過getMenuInflater()方法可以獲得MenuInflater對象,再調用它的Inflater()方法就能夠給當前活動建立菜單

inflate()方法接收兩個參數,第一個參數用於指定咱們經過哪個資源文件來建立菜單,第二個參數用於指定咱們的菜單項添加到哪個Menu對象中

public boolean onCreateOptionsMenu(Menu menu) {
        //return super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.main,menu);
        return true;
    }

定義菜單響應事件

onOptionsItemselected()方法中,經過調用item.getItemId()來判斷咱們點擊的是哪個菜單項,而後給每一個菜單項加入本身的邏輯處理

finish()能銷燬當前的活動

Intent是Android程序中各組件之間進行交互的一種重要方式,它不只能夠指明當前組件想要執行的動做,還能夠在不一樣組件之間傳遞數據。intent有顯式和隱式

關於一篇將intent和intentfilter很好的文章

更好的一篇

Intent(Context packageContext, Class<?> cls) ,第一個參數Context要求提供一個啓動活動的上下文,第二個參數Class則是指定想要啓動的目標活動,經過這個構造就能夠構建粗Intent的意圖

Activity類中提供了一個startActivity()方法,這個方法是專門用於啓動活動的,它接收一個Intent參數

隱式Intent

不明確指出咱們想要啓動哪個活動,而是指定了一系列更爲抽象的action和category等信息,而後交由系統去分析這個Intent,並幫咱們找出合適的活動去啓動。

intent解析機制主要是經過查找已註冊在AndroidManifest.xml中的全部IntentFilter及其中定義的Intent,最終找到匹配的Intent

在 AndroidManifest.xml

<activity android:name=".SecondActivity">
            <intent-filter>
                <action android:name="com.example.rebeccafan.myapplication.ACTION_START"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
 public void onClick(View v){
                //Toast.makeText(FirstActivity.this,"你點了Button1",Toast.LENGTH_LONG).show();
                //Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                Intent intent =new Intent("com.example.rebeccafan.myapplicaiton.ACTION_START");
                startActivity(intent);
            }

使用隱式intent,咱們不只能夠啓動程序內的活動,還能夠啓動其餘程序的活動

public void onClick(View v){
                //Toast.makeText(FirstActivity.this,"你點了Button1",Toast.LENGTH_LONG).show();
                //Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                //Intent intent =new Intent("com.example.rebeccafan.myapplicaiton.ACTION_START");
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("http://www.pornhub.com"));
                startActivity(intent);

指定了Intent的action是Intent.ACTION_VIEW,這是一個Android系統內置的動做,其常量值爲android.intent.action.VIEW

 

<activity android:name=".ThirdActivity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="http"/>
            </intent-filter>
</activity>

經過android:scheme 指定了數據的協議必須是http協議,這樣ThirdActivity應該就和瀏覽器同樣,可以響應一個打開網頁的Intent

Intent還能夠在啓動活動的時候傳遞數據

putExtra()能夠把咱們想要傳遞的數據暫存在Intent中,啓動了另外一個活動後,只須要把這些數據從Intent中取出就能夠

經過getIntent()方法獲取到用於啓動SecondActivity的Intent,而後調用getStringExtra()方法來獲取傳遞的數據

活動的生命週期

一個任務就是一組存放在棧裏的活動的集合

活動狀態:

1.運行狀態

2.暫停狀態

3.中止狀態

4.銷燬狀態

Activity中提供了一個onSaveInstanceState()方法會攜帶一個Bundle類型的參數,Bundle提供了一系列方法用於保存數據(putString() putInt())

Layout

andorid: id是給當前的元素定義一個惟一的標識符,以後能夠在代碼中對這個元素進行操做

在xml中定義一個id,@+id/id_name 引用一個id @id/id_name

andorid:layout_width指定了當前元素的寬度 match_parent 表示讓當前元素和父元素同樣

andorid:layout_height指定了當前元素的高度 wrap_content 表示當前元素恰好包含裏面的內容

andorid:text指定了元素中顯示的文字內容