非全屏Activity實現,以及觸摸消息的處理

本次主要針對,非全屏的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時去掉多餘的陰影。
相關文章
相關標籤/搜索