編輯:關於Android編程
?Activity
?BroadcastReceiver 廣播接收者
?Service 服務
?ContentProvider 內容提供者
Activity的繼承關系
public class Activity extends ContextThemeWrapper implements ….
public class ContextThemeWrapper extends ContextWrapper
public class ContextWrapper extends Context
public abstract class Context
Activity的編寫步驟:
1.寫一個類繼承 Activity
2.重寫onCreate()方法
3.在清單文件的下面聲明activity
需要配置 布局文件 res/layout/…
需要設置布局文件 setContentView(R.layout.activity_main);
Activity相關
Activity生命周期
Android四大組件
entire lifetime –>完整生命周期
onCreate() –> onStart() –> onResume() –> onPause() –> onStop() –> onDestroy()
visible lifetime –>可視化生命周期
onStart()–>onResume()–>onPause()–>onStop() –> onRestart();
foreground lifetime –>前台生命周期
onResume() –> onPause()
onRestart()調用過程
onStop() –> onRestart() –> onStart()
?onCreate()
當activity被創建時調用的方法
?onStart()
在onCreate()方法之後調用,當用戶看到界面的時候調用
?onResume()
在onStart()方法之後調用,當activity後去焦點的時候調用
?onPause()
當activity失去焦點的時候調用 –> activity還能看見,但是對於activity裡面的點擊事件都無效了
?onStop()
當activity界面不可見的時候調用
?onDestroy()
當activity被銷毀的時候調用
?onRestart()
當用戶按home鍵切換到桌面,然後再進入activity的時候 會調用
配置activity沒有標題欄方法
?配置application的theme
true
?在自己寫的activity的oncreate的方法裡加入
requestWindowFeature(Window.FEATURE_NO_TITLE);
注意:這個方法要在setContentView之前調用,否則會報錯
怎麼創建一個activity界面
1.創建類繼承Activity
2.在清單文件(AndroidManifest.xml)裡面配置activity
3.實現類裡的OnCreate的方法 –>這是Activity開啟時調用的方法
4.在OnCreate方法裡用 setContentView() –>指定activity顯示的layout頁面
怎麼跳轉一個Activity
直接開啟
1.初始化顯示意圖,制定要跳轉的Activity
Intent intent = new Intent(上下文,myActivity.class);
或者:
Intent intent = new Intent();
intent.setClass(上下文,myActivity.class);
2.如果有參數,用intent攜帶參數
intent.putExtra(key,value); –>裡面存放的格式有:數據基本類型,序列化對象,字節數組…
如果對象 實現了 Parcelable接口 或者 Serializable接口,也可以通過intent來傳遞
3.調用startActivity 來跳轉新頁面
上下文.startActivity(intent);
4.如果當前頁面需要關閉,在當前頁面調用finish方法
上下文.finish();
5.跳轉過去的頁面要獲取數據調用intent的get…方法
注意:這裡不能new一個intent,否則拿不到數據,要獲跳轉過來的intent,用getIntent來獲取
Intent intent = getIntent();
intent.getXXXExtra();
利用startForResult來開啟
1.初始化意圖
2.如果有參數設置參數
3.調用startActivityForResult() 跳轉頁面
startActivityForResult(intent,requestCode);
–>requestCode:請求碼,設置大於和等於0的數字
4.在跳轉的activity裡實現回跳的邏輯
Intent intent = new Intent();
intent.putXXX(); –>根據業務需求是否需要攜帶參數
setResult(resutlCode,intent);
finish(); –>最後需要關閉當前頁面
5.當前activity實現onActivityResult()方法 –> 這是回跳的時候執行的方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
requestCode 是調用startActivityForResult時設置的requestCode
resultCode 是回跳的activity設置的code
data 是回跳時候攜帶的參數
可能當前頁面需要跳轉的頁面過多,這裡可以用requestCode和resultCode去過濾
顯示意圖&隱式意圖
?顯示意圖:必須指定打開的activity的類名或者路徑名
應用場景–>適合自己應用程序內部使用,效率高
例子:
Intent intent = new Intent();
intent.setClassName(應用程序包名, 要跳轉的activity路徑名);
startActivity(intent);
?隱示意圖:需要指定action(動作)和category,如果action相同,而內容不同,可以配置data來區分
應用場景–>適合應用程序之間調用,根據action在去遍歷查找,效率低
例子:
1.要跳轉的activity在清單文件裡增在intent-filter
//默認
2.誰要跳轉到這個activity,誰的方法裡面調用 Intent intent = new Intent(); intent.setAction("要跳轉的activity在清單文件裡配置的action"); intent.addCategory("android.intent.category.DEFAULT");-->默認 startActivity(intent);
隱示意圖需要注意的地方
?在清單文件的 intent-filter 裡面還可以配置 data標簽,data標簽可以配置多個不同種類型的
例如:
閒來無事寫的一個加載框,實現效果如下:實現思路:其實看樣子就感覺很簡單的...在自定義Relativelayout裡用onDraw繪制就行了。復習了一下以前學的知識。&n
Android SDK本身提供了一種默認創建菜單的機制。但通過這種機制創建的菜單雖然從功能上很完備,但在界面效果上實在是
ViewRoot目前這個類已經沒有了,是老版本中的一個類,在Android2.2以後用ViewRootImpl代替ViewRoot,對應於ViewRootImpl.jav
效果預覽Send:Click LocationMessage: 實現1:注冊高德地圖開發者賬號,創建應用、獲取高德地圖的 appkey2: jar 包建議直接從 融雲