1 Activity 概念 java
呈如今手機上的視圖界面,相似於web程序的Servlet,它的父類是Context(上下文)。android
2 Activity 建立web
1)新建一個繼承Activity的類緩存
2)重寫onCreate方法,這個方法會在Activity啓動時第一個被調用,在這個方法中咱們通常會有這兩個步驟:app
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
3)在AndroidManifest中註冊Activity,AndroidManifest文件猶如web程序中的web.xml文件佈局
<activity android:name="com.hnust.moon.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".OtherActivity" android:label="other_activity"> </activity>
4)一個Activity只是一個視圖,咱們須要在視圖中設置UI佈局,那麼還要放置組件在Activity中。this
3 多個Activity之間相互切換spa
假設咱們按照以上步驟已經建立了兩個Activity,這時咱們能夠經過intent進行數據動做調用:code
MainActivity中:xml
Intent intent = new Intent(); intent.setClass(MainActivity.this, OtherActivity.class); intent.putExtra("name", "heweipo_test"); MainActivity.this.startActivity(intent); OtherActivity中 Intent intent = this.getIntent(); String value = intent.getStringExtra("name"); .....
4 Activity中添加菜單
1)首先繼承ActionBarActivity
2)重寫onCreateOptionsMenu和onOptionsItemSelected;前者是按下菜單按鈕時觸發的事件,咱們通常在這裏初始化菜單的組件;後者是當菜單的具體某一項被點擊時觸發,這裏主要是編寫每個菜單項的具體業務功能。
3)java代碼初始化菜單組件以下:onCreateOptionsMenu 具體實現
menu.add(0, 8080, 1, R.string.exit);//menu.add(group,itemID,order,title); menu.add("file"); SubMenu sub = menu.addSubMenu("sub"); sub.add(group,itemID,order,title);//添加子菜單使用 getMenuInflater().inflate(R.menu.main, menu); //從資源文件中找到name爲main.xml的文件而後強制轉爲當前activity下的菜單。
XML文件實現
<item android:id="@+id/mainActivity_operation" android:title="@string/mainActivity_operations" > <menu> <item android:id="@+id/menu_addition" android:title="@string/addition" /> <item android:id="@+id/menu_subtraction" android:title="@string/subtraction" /> </menu> </item> <group android:id="group"> 菜單分組控制 <item android:id="@+id/file2" android:title="file2"></item> <item android:id="@+id/file3" android:title="file3"></item> </group>
4)關於菜單項點擊時具體處理:onOptionsItemSelected
int id = item.getItemId(); switch (id) { case R.id.action_settings: break; case 8080: finish(); break; } return super.onOptionsItemSelected(item);
5 橫屏與豎屏
1)activity初始化時或者橫豎屏切換時 onCreate方法都會被調用。關於這個問題,若是咱們的在activity中剛剛輸入了部份內容,結果
由於屏幕橫豎發生變化,會不會致使之前內容丟失呢?Google是這樣解決的問題的,若是橫屏和豎屏中layout的組件有相同的ID,那麼Google會緩存這部份內容,根據ID在對應的組件上添加之前的內容,可是要是沒有ID,或者找不到ID,那麼這些內容確定會丟失!另外,賦值這些內容並非在onCreate方法調用以前而是以後,因此在onCreate方法是不可能獲取到緩存的值的,同時咱們也不能在onCreate方法中爲組件賦值,由於會被覆蓋。橫屏或豎屏分開佈局只要新建兩個與layout同目錄下的文件夾layout_land與layout_port.
2)onConfigurationChanged(configure)
<activity android:name="..." android:configChanges="orientation|keyboardHidden|screen..."> <intent-filter>........</intent-filter> </activity>
若是咱們在配置文件以下指定,那麼橫豎屏替換時,就不會調用onCreate方法,而是調用onConfigurationChanged
this.getResources().getConfiguration().orientation ,configure.orientation 一樣能夠判斷方向。
3)控制橫屏與豎屏是在AndroidManifest文件中Activity中設置android:screenOrientation值,有以下幾個值:
unspecified 默認值,由系統判斷狀態自動切換
landscape 橫屏
portrait 豎屏
user 用戶當前設置的orientation值
behind 下一個要顯示的Activity的orientation值
sensor 使用傳感器 傳感器的方向
nosensor 不使用傳感器 基本等同於unspecified