活動(dòng)被回收了:
輸入一段文字播演,然后去啟動(dòng)另一個(gè)activity蹬挤,上一個(gè)活動(dòng)回收,當(dāng)back回來(lái)時(shí)调鲸,文字沒(méi)有了等盛杰,這時(shí)候用覆寫(xiě)回調(diào)方法把臨時(shí)數(shù)據(jù)保存下來(lái):onSaveInstanceState(Bundle b){
super.onSaveInstanceState(b);
b.putString("datakey","hello");//putInt
}
然后在onCreate()中恢復(fù)數(shù)據(jù)
onCreate(Bundle saveInstanceState){
super.onCreate(saveInstanceState);
ReData=savaInstanceState.getString("datakey");
}
四種啟動(dòng)模式
在activity的配置文件中指定:android:launchMode="xxx"
有standard,singleTop藐石。singleTask,singleStance.
默認(rèn)是standard,缺點(diǎn)是可能重復(fù)創(chuàng)建多個(gè)相同的活動(dòng)即供,a-a a-a a-a
singleTop:可以判斷棧頂?shù)幕顒?dòng)是不是返回棧的活動(dòng),如果不是才會(huì)創(chuàng)建新的實(shí)例于微,但是一個(gè)活動(dòng)還是會(huì)重復(fù)創(chuàng)建不同的實(shí)例逗嫡,例如a-b b-a a-b,
singleTask:?jiǎn)?dòng)活動(dòng)的時(shí)候會(huì)在返回棧中尋找有沒(méi)有該活動(dòng)的實(shí)例株依,有的話(huà)就把其上面的活動(dòng)全部出棧驱证,這樣就在棧頂,而且保證了一個(gè)活動(dòng)只有一個(gè)實(shí)例恋腕。
singleInstance:在一個(gè)application中上面三中都視情況而定抹锄,但如果多個(gè)application,每個(gè)application都有自己的返回棧,當(dāng)一個(gè)活動(dòng)是可以被多個(gè)application訪問(wèn)的時(shí)候伙单,這個(gè)活動(dòng)必然會(huì)在多個(gè)返回棧中產(chǎn)生多個(gè)實(shí)例获高,而singleInstance會(huì)有一個(gè)單獨(dú)的返回棧來(lái)管理這個(gè)活動(dòng)。
android四種布局
LinearLayout:
layoutgravity="top/bottom/center"還有其它屬性吻育。
RelativeLayout:
android:layout_alignParentLeft="true"
android:layout_above/below/torightof/toleftof="@id/xxx"
Framelayout:
沒(méi)有任何定位方式念秧,所有的控件都擺放在布局的左上角,動(dòng)態(tài)加載碎片中使用。
TableLayout:
自定義控件:
所有的控件都直接或間接繼承view布疼,所有的布局都是直接或間接繼承viewgroup.viewgroup可以包含很多子view 子viewgroup.
view分:textview出爹,imageview viewgroup.
textview 分:edittext button
viewGroup分:四種布局
引入布局;include
自定義布局:新建一個(gè)class繼承四個(gè)布局,
然后在xml中<com....></com....>
發(fā)送短信
Editor to,msg;
SmsManager s=SmsManager.getDefault();
s.sendTextMessage(to.getText().toString(),null,msg.getText().toString(),null,null);
自拍
因?yàn)槭褂胕ntent來(lái)啟動(dòng)自帶的相機(jī)application缎除,所以當(dāng)返回上一個(gè)活動(dòng)時(shí)要帶回?cái)?shù)據(jù)严就。startActiviyForResult();覆寫(xiě)onActivityResult();
1.創(chuàng)建一個(gè)file對(duì)象,獲取手機(jī)的根目錄
File outputImage = new File(Environment.getExtranalStorageDirectory(),"temp.jpg");
2.用Uri的fromfile()將file對(duì)象轉(zhuǎn)為uri對(duì)象,標(biāo)識(shí)這張圖片
imageuri=Uri.fromfile(outputImage);
3.啟動(dòng)相機(jī)application器罐,指定intent的action(隱式)為相機(jī)梢为,指定圖片的輸出地址。
new intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT,imgeUri);
startActivityForResult(intent,TAKE_PHOTO);
4.啟動(dòng)時(shí)forresult轰坊,所以會(huì)有結(jié)果返回onactivityresult()铸董。
其中再次創(chuàng)建intent啟動(dòng)剪裁程序,裁剪后同樣輸出到image.jpg,裁剪完成之后又會(huì)回調(diào)到onactivityResult()肴沫,將圖片解析成bitmap對(duì)象粟害,然后設(shè)置到imageview中顯示出來(lái)。
onActivityResult(int requsetCode,int resultCode,Intent data){
switch(requestcode){
case TAKE_PHOTO:
if(resultCode==RESULT_OK){
new intent("com.android.camera.action.crop");
intent.setDataAndType(imageuri,"image/*");
intent.putExtra("scale",true);//圖片太大颤芬,不需要全部悲幅。
intent.putExtra(MediaStore.EXTRA_OUTPUT,imgeUri);
startActivityForResult(intent,CROP_PHOTO);
case CROP_PHOTO:
if(resultCode==RESULT_OK){
Bitmap b=BitmapFactory.decodeStream(getContentResolver().openInputStream(imageuri));
picture.setimageBitmap(b);
}
}
}