1. 程式人生 > >一點一點學java

一點一點學java

col 要求 activit 協議 文本 color items ins 努力

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()方法來獲取傳遞的數據

Layout

andorid: id是給當前的元素定義一個唯一的標識符,之後可以在代碼中對這個元素進行操作

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

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

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

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

一點一點學java