1.AndroidManifest檔案中的幾個細節 , Android系統中一個界面就對應了一個activity。
1.一個應用程式可以有多個桌面圖示:
建立桌面圖檔的方法,給activity添加以下節點:
<intent-filter>
//MAIN:應用程式的入口
<action android:name="android.intent.action.MAIN" />
//LAUNCHER:啟動器. category常見的類型:CAR_MODE、CAR_DOCK車載電腦模式、LAUNCHER啟動器、DEFAULT預設的類型,我們自己開發的activity通常使用這個類型。
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
1.action動作:可以使用系統定義好的類類型,可以自定義(大寫);
2.activity節點中的label标簽的值表示桌面圖示的名稱;
3.application節點中的label标簽的值可以在應用程式管理清單中看到;
4.application節點中的label和activity節點中的label标簽不是一個概念,activity節點中的label标簽表示界面的标題;
2.意圖設定動作激活新的界面(重點)
Intent意圖:做一件事情的想法;
意圖包括的元素:動作:action,資料:data
意圖的作用:激活元件和攜帶參數.
* 使用意圖開啟一個activity的代碼:
//隐式意圖
Intent intent = new Intent();
//設定目标activity的動作(必須與配置檔案的aciton一緻)
intent.setAction("android.intent.action.SHOWSECOND");
//設定目标data的動作(必須與配置檔案的data一緻)
intent.setData(Uri.parse("qaa://011"));
//設定目标category的動作(必須與配置檔案的category一緻)
intent.addCategory("android.intent.category.DEFAULT");
//開啟一個新的activity(打開一個新的界面)
startActivity(intent);
3.意圖設計的目的
解耦:讓應用程式能夠獨立運作又能互相調用.
* WebView的使用:
wv = (WebView) findViewById(R.id.wv);
//設定浏覽器不帶緩存的功能
WebSettings settings = wv.getSettings();
//設定浏覽器是記錄緩存資料
settings.setAppCacheEnabled(false);
//擷取其他應用程式使用intent傳遞雇來的資料
Intent intent = getIntent();
Uri uri = intent.getData();
if(uri != null){
wv.loadUrl(uri.toString());
}
4.隐式意圖和顯式意圖(重點)
* 隐式意圖:
在開啟目标activity的時候沒有直接指定目标activity名稱,通過指定一組動作、資料、類型等,讓系統自動的去配置檔案中比對目标activity。開啟的速度比較慢。
模版代碼:
Intent intent = new Intent();
//設定目标activity的動作(必須與配置檔案的aciton一緻)
intent.setAction("android.intent.action.SHOWSECOND");
//設定目标data的動作(必須與配置檔案的data一緻)
intent.setData(Uri.parse("itheima://110"));
//設定目标category的動作(必須與配置檔案的category一緻)
intent.addCategory("android.intent.category.DEFAULT");
//開啟一個新的activity(打開一個新的界面)
startActivity(intent);
應用場景:
開啟别的應用程式中的activity。
* 顯式意圖:
在開啟目标activity的時候直接指定目标activity名稱。開啟的速度比較快。
模版代碼:
//建立顯式意圖,速度比較快。參數1:代表上下文,參數2:位元組碼。
Intent intent = new Intent(this, SecondActivity.class);
//開啟目标activity
startActivity(intent);
應用場景:限于應用程式内部開啟activity。
5.意圖傳遞資料(重點)
從第一個界面跳轉到第二個界面上,并且把資料傳遞給第二個界面。
傳遞資料:
//建立顯式意圖
Intent intent=new Intent(this, SecondActivity.class);
// 裝入名字
intent.putExtra("name", "qaa");
//裝入年齡
intent.putExtra("age", 11);
//簡單的裝入
Bundle b = new Bundle();
b.putString("name", "ama");
b.putInt("age", 4);
intent.putExtras(b);
//開啟目标activity
startActivity(intent);
接收資料:
//獲得調用者傳遞過來的意圖對象
Intent intent = getIntent();
// 獲得傳遞過來的名字
String name = intent.getStringExtra("name");
//獲得傳遞過來的年齡
int age = intent.getIntExtra("age", 0);
//間接獲得
Bundle b = intent.getExtras();
String name = b.getString("name");
int age = b.getInt("age");
//傳遞方:put,接收方:get
6.URI詳解
URI:資料資源位址;
content://com.qaa.superbrowser/ad/table1/1
URL:http://www.baidu.com/image/1.jpg
7.開啟activity擷取傳回值(重點)
從第一個界面跳轉到第二個界面,當第二界面關閉的時候傳回給第一個界面一些資料。
步驟:
1.建立一個顯示意圖,使用startActivityForResult方法開啟目标activity:
Intent intent = new Intent(this,SecondActivity.class);
//開啟目标activity,并期望目标activity關閉的時候傳回一個結果資料
startActivityForResult(intent, 0);
2.在目标activity中設定傳回資料,并關閉界面:
Intent intent = new Intent();
intent.putExtra("news", "我是第二個界面傳回的額資料");
//設定傳回的資料,在目前界面關閉的時候才會調用這個方法
setResult(100, intent);
//關閉目前界面
finish();
3.在調用者activity中重寫onActivityResult方法接收目标activity傳回的資料:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
//接收目标activity傳回的資料
String news = data.getStringExtra("news");
//使用請求碼區分目前資料是從哪個業務邏輯界面傳回的
switch (requestCode) {
case 0:
Toast.makeText(this, news, 0).show();
break;
case 1:
Toast.makeText(this, news, 0).show();
break;
}
}
8.請求碼和結果碼的作用(重點)
用來判斷目前資料是從哪個業務邏輯界面傳回的。
9.activity的生命周期(重點)
人的生命周期:被出生、幼年、童年、少年、青年、中年、老年。
Activity的生命周期(重點):7個
onCreate:初始化
onStart:開始
onResume:界面可見
onPause:暫停,界面不可見
onRestart:重新開始
onStop:停止
onDestroy:銷毀
1.打開一個界面:onCreate、onStart、onResume;
2.最小化一個界面:onPause、onStop;
3.重新打開被最小化的界面:onRestart、onStart、onResume;
4.關閉一個界面:onPause、onStop、onDestroy;
10.橫豎屏切換的生命周期(重點)
橫豎屏切換的生命周期變化:先關閉前一個界面,再打開一個新的界面。
固定橫豎屏的方法:
android:screenOrientation="portrait"
常見的類型:portrait豎屏、landscape橫屏、sensor感應器類型 可以橫豎屏自适應,預設是這個類型。
11.任務棧的概念
隊列:先進先出;
棧:先進後出;
任務:要做一件事情;在Android中對應了一個打開的activity執行個體。
任務棧:存儲任務的棧;
打開一個界面時,就會有一個任務壓入棧中;
關閉一個界面時,就會從任務棧中清除一個任務;
當應用程式的界面都關閉的時候,任務棧就被清空了,說明應用程式也退出了;
任務棧啟動模式:
standar:标準模式,每打開一個界面都會建立一個執行個體放入任務棧中;
singleTop:單一頂部模式,
12.singletop啟動模式
singletop 單一頂部模式
在activity的配置檔案中設定
android:launchMode="singleTop" 如果任務棧的棧頂存在這個要開啟的activity,不會重新的建立activity,而是複用已經存在的activity。保證棧頂如果存在,不會重複建立。 應用場景:浏覽器的書簽
13.singletask和singleinstance啟動模式
singetask:單一任務棧,在目前任務棧裡面隻能有一個執行個體存在,應用于Activity獨立的運作。
當開啟activity的時候,就去檢查在任務棧裡面是否有執行個體已經存在,如果有執行個體存在就複用這個已經存在的activity,并且把這個activity上面的所有的别的activity都清空,複用這個已經存在的activity。保證整個任務棧裡面隻有一個執行個體存在
應用場景:浏覽器的activity
如果一個activity的建立需要占用大量的系統資源(cpu,記憶體)一般配置這個activity為singletask的啟動模式。webkit核心 c代碼
singleInstance啟動模式非常特殊, activity會運作在自己的任務棧裡面,并且這個任務棧裡面隻有一個執行個體存在 如果你要保證一個activity在整個手機作業系統裡面隻有一個執行個體存在,使用singleInstance 應用場景: 電話撥打界面
14.幀動畫
幀動畫(Drawable Animation):把一組有序的圖檔,一幀一幀的去播放,這個變化過程;
代碼(參考開發文檔):
xml檔案:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" >
<item
android:drawable="@drawable/girl_1"
android:duration="200"/>
<item
android:drawable="@drawable/girl_2"
android:duration="200"/>
<item
android:drawable="@drawable/girl_3"
android:duration="200"/>
<item
android:drawable="@drawable/girl_4"
android:duration="200"/>
<item
android:drawable="@drawable/girl_5"
android:duration="200"/>
<item
android:drawable="@drawable/girl_6"
android:duration="200"/>
<item
android:drawable="@drawable/girl_7"
android:duration="200"/>
<item
android:drawable="@drawable/girl_6"
android:duration="200"/>
<item
android:drawable="@drawable/girl_7"
android:duration="200"/>
<item
android:drawable="@drawable/girl_6"
android:duration="200"/>
<item
android:drawable="@drawable/girl_7"
android:duration="200"/>
<item
android:drawable="@drawable/girl_8"
android:duration="200"/>
<item
android:drawable="@drawable/girl_9"
android:duration="200"/>
<item
android:drawable="@drawable/girl_10"
android:duration="200"/>
<item
android:drawable="@drawable/girl_11"
android:duration="200"/>
</animation-list>
轉載于:https://www.cnblogs.com/kingqinwang/p/5123452.html