Android開發之浮動Activity

場景

在使用App時,曾經看到這樣一個場景,如下圖所示,點擊頂部菜單按鈕,有一個類似的對話框的列表顯示出來,讓用戶選擇其中的一個快遞選項,然后選中的快遞信息就會填充到底部的Activity中。

Android開發之浮動Activity

 

分析

類似這樣的效果到底是怎么做出來的?彈出的是一個普通對話框嗎?其實不一定,彈出的可能是一個Activity,但不同的是該Activity是浮動顯示在某一個Activity之上,而不是直接跳轉。

案例

在最近一個App中有一個界面如下:

Android開發之浮動Activity

點擊底層Activity中浮動按鈕,會浮動一個年份列表,選擇某一個年份后回到底部Activity,然后底部Activity根據選擇的年份加載對應的數據。這里底層的Activity略過,重點講解一下浮動的Activity是如何實現的。

1、由于其本質還是一個Activity,所以看到的界面就是需要在xml中布局,這里非常簡單,就是一個ListView,顯示年份,比較簡單,就不粘貼代碼了

2、新建一個style,該style配置Activity為浮動顯示

<style name="Theme.Transparent" parent="android:Theme.Dialog">
    <item name="android:windowIsTranslucent">true</item>//此對話框的背景
    <item name="android:windowBackground">@android:color/transparent</item>//對話框是否透明
    <item name="android:windowContentOverlay">@null</item>//對話框是否有遮蓋
    <item name="android:windowNoTitle">true</item>//對話框無標題
    <item name="android:windowIsFloating">true</item> //對話框是否浮動
    <item name="android:backgroundDimEnabled">true</item>//是否允許對話框的背景變暗
</style>

3、AndroidManifest.xml中設置Activity的主題如上

<activity
        android:name="com.activity.SelYearActivity"
        android:theme="@style/Theme.Transparent"></activity>

4、在底部的Activity中調用 startActivityForResult,并重寫onActivityResult方法接收浮動Activity返回的數據,進行相應的邏輯處理,如之前提到的快遞信息。

5、最后在浮動的Activity中設置ListView的點擊事件,這里將要將返回的數據添加到Intent中,然后調用 setResultonBackPressed(),傳值回底層的Activity并讓當前浮動的Activity消失,大功告成。代碼如下

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            //將選擇的年份回傳至上個界面  并讓本界面消失
            Intent intent = new Intent();

            intent.putExtra("selYear", years.get(i));

            setResult(RESULT_OK, intent);

            onBackPressed();

        }
    });</code></pre> 


 

文/YungFan(簡書)
via:http://www.jianshu.com/p/a5f64e165ba7

 本文由用戶 noelcaric12v 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!