本次主要針對,非全屏的Activity作些瞭解;java
做爲初學者,以前接觸到的activity大部分狀況,都是全屏顯示;android
想要實現局部窗口的時候,都是採用懸浮窗來替代activity;直到最近才偶然瞭解到經過Theme.Dialog也能將activity實現局部現實的效果;瀏覽器
1.利用eclipse生成一個helloword的工程;eclipse
2.修改res\values\styles.xml以下:ide
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="Theme.NotFullActivity" parent="android:style/Theme.Dialog"> <item name="android:windowCloseOnTouchOutside">false</item> <item name="android:windowNoTitle">false</item> <item name="android:windowIsFloating">true</item> </style> </resources>
android:windowCloseOnTouchOutside 點擊activity窗口以外時,是否關閉activity;
android:windowNoTitle 是否有標題欄;
android:windowIsFloating 是否懸浮在其餘activity之上;這裏必需要設置爲true,不然activity顯示的時候,窗口雖然不是全屏,可是背景窗口任然是全屏的;
3.修改AndroidManifest.xml的主題風格爲剛剛自定義的主題測試
android:theme="@style/Theme.NotFullActivity"
4.MainActivity.java修改窗口的大小動畫
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LayoutParams attributes = getWindow().getAttributes();
attributes.dimAmount = 0.0f; //設置窗口以外部分透明程度 attributes.x = 0; attributes.y = 0; attributes.width = 800; attributes.height = 1024; getWindow().setAttributes(attributes); getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL); }
attributes.dimAmount 設置除acitvity以外的窗口,透明程度;
如下是將dimAmount分別設置爲:0.0f 和 0.6f的效果對比
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
這個是去掉activity對窗口以外的觸摸消息響應(若是不設置此選項,那麼如上圖當中的:「瀏覽器」,「短信」都是不能點擊的)
5.layout\activity_main.xml 隨便加上倆控件spa
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="請輸入:"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="111"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="222"/> </LinearLayout>
附加幾個andoird window屬性的解釋(沒有測試過)轉自:http://my.oschina.net/tedyin/blog/178376.net
<item name="windowBackground"> 窗體的背景 </item> <item name="windowFrame">Dialog 是否有邊框 </item> <item name="windowNoTitle">窗體是否有標題</item> <item name="windowFullscreen">false</item> 是否爲全屏 <item name="windowOverscan">false</item> 是否要求窗體鋪滿整屏幕 <item name="windowIsFloating">false</item> 窗體是否浮在下層之上 <item name="windowContentOverlay">@null</item> 設置窗體內容背景 <item name="windowShowWallpaper">false</item> 是否顯示壁紙 <item name="windowTitleStyle">@android :style/WindowTitle</item> 窗體的標題欄Style <item name="windowTitleSize">25dip</item> 窗體文字大小 窗體標題欄背景 <item name="windowTitleBackgroundStyle">@android :style/WindowTitleBackground</item> 窗體切換時的動畫樣式 <item name="android:windowAnimationStyle">@android :style/Animation.Activity</item> 在使用輸入法時窗體的適配 <item name="android:windowSoftInputMode">stateUnspecified|adjustUnspecified</item> <item name="windowActionBar">false</item> 是否打開ActionBar <item name="windowActionModeOverlay">false</item> 這個暫時不知道,但願大神能回答一下。 <item name="windowCloseOnTouchOutside">false</item> 是否再點擊外部可關閉 <item name="android:windowIsTranslucent">false</item> 窗體是否半透明 <item name="android:backgroundDimEnabled">false</item>: 背景是否模糊顯示 <item name="android:windowContentOverlay">@null</item> 自定義Titlebar時去掉多餘的陰影。