【Code-Snippet】Activity & Window

1. ConfigChanges

這是在AndroidManifest中設置的,效果是監聽各類致使Activity重繪的參數的變化。例如,當設置了android:configChanges="orientation|screenSize"的時候,當橫屏豎屏切換的時候,若是沒有設置這個屬性,Activity會重繪,若設置了,Activity不會重繪,而是會調用onConfigurationChanged方法。java

<activity
    android:name=".Activity.LoadingActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:screenOrientation="portrait"
    android:theme="@style/FullscreenTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
複製代碼
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}
複製代碼
  • orientation : 橫屏豎屏的切換
  • keyboardHidden :鍵盤的隱藏
  • screenSize :屏幕大小的變化

2. ScreenOrientation

指定Activity的屏幕方向android

<activity
    android:name=".Activity.LoadingActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:screenOrientation="portrait"
    android:theme="@style/FullscreenTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
複製代碼
  • landscape:限制界面爲橫屏,旋轉屏幕也不會改變當前狀態。
  • portrait:限制界面爲豎屏,旋轉屏幕也不會改變當前狀態。
  • sensor:根據傳感器定位方向,旋轉手機90度,180,270,360,界面都會發生變化。
  • sensorLandscape:(橫屏的旋轉,不會出現豎屏的現象)根據傳感器定位方向,旋轉手機180度界面旋轉。通常橫屏遊戲會是這個屬性。
  • sensorPortrait:(豎屏的旋轉,不會出現橫屏的現象)根據傳感器定位方向,旋轉手機180度界面會旋轉。
  • unspecified:由系統選擇顯示方向,不一樣的設備可能會有所不一樣。(旋轉手機,界面會跟着旋轉)
  • user:用戶當前的首選方向。
  • nosensor:不禁傳感器肯定方向。旋轉設備的時候,界面不會跟着旋轉。初始界面方向由系統提供。

3. Style-Windows設置

指定Activity的Style,或者是其餘的,dialog也能夠。bash

<activity
    android:name=".Activity.LoadingActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:screenOrientation="portrait"
    android:theme="@style/FullscreenTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
複製代碼
<style name="DialogTransparent" parent="@android:style/Theme.Dialog">
    <item name="windowBackground"> 窗體的背景 </item>
    <item name="windowFrame">Dialog 是否有邊框 </item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Activity</item>
    <item name="windowNoTitle">窗體是否有標題</item>
    <item name="windowFullscreen">false</item>  #是否爲全屏
    <item name="windowShowWallpaper">false</item>     #是否顯示壁紙
    <item name="windowTitleSize">25dip</item>        # 窗體文字大小
    <item name="windowCloseOnTouchOutside">false</item>  #是否再點擊外部可關閉
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>
複製代碼

屬性說明:app

  • windowBackground : 背景
  • windowAnimationStyle :窗口/Activity的動畫
  • windowNoTitle :窗口有無Title
  • windowContentOverlay :當窗口加載完成前,制定最開始的圖片。@null是沒有。相信每一個app都須要一個閃屏頁 就是一個開始頁面 對於新手來講 可能就直接一個activity 弄個背景圖片 ,細心地同窗也許會發現 每次啓動 應用程序的時候 一開始顯示的不是那個設置的背景圖片 而是白色或黑色背景 可能時間很短這是爲何呢。再看看其餘市面上的應用都是一開始就是顯示背景圖片 而沒有白色背景 研究了好久 其實 設置一下主題就好了 給activity設置主題其中有一個屬性
  • windowIsFloating : 是否浮如今activity之上
  • windowIsTranslucent :是否半透明
  • backgroundDimEnabled :是否容許背景灰暗

4. ActivityForResult用法

1.在 MainActivity 中調用:ide

startActivityForResult(new Intent(MainActivity.this,CaptureActivity.class),0x01);
複製代碼
  • 參數一:是一個Intent
  • 參數二:是一個約定的結果代號

2.在 MainActivity 中重寫 onActivityResult 方法動畫

其中,resultCode 是以前約定的結果代號,data 爲第二個頁面傳回來的數據。ui

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode==0x01) {
        Log.e("---","jkfjlds");
    }
    super.onActivityResult(requestCode, resultCode, data);
}
複製代碼

3.在第二個頁面,使用:this

//這裏的 intent 是返回的 Intent
//這裏的 setResult 是設置返回結果的 Intent,其還帶有,約定的結果代號。
Intent intent = new Intent();
intent.putExtra("result",result_p);
setResult(0x01,intent);
finish();
複製代碼
相關文章
相關標籤/搜索