Android開發之浮動Activity
場景
在使用App時,曾經看到這樣一個場景,如下圖所示,點選頂部選單按鈕,有一個類似的對話方塊的列表顯示出來,讓使用者選擇其中的一個快遞選項,然後選中的快遞資訊就會填充到底部的Activity中。
分析
類似這樣的效果到底是怎麼做出來的?彈出的是一個普通對話方塊嗎?其實不一定,彈出的可能是一個Activity,但不同的是該Activity是浮動顯示在某一個Activity之上,而不是直接跳轉。
案例
在最近一個App中有一個介面如下:
點選底層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中,然後呼叫 setResult
和 onBackPressed()
,傳值回底層的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();
}
});
相關文章
- Android開發之Activity轉場動畫Android動畫
- android 團隊開發技巧1 - activity 啟動Android
- 安卓開發之Activity的4種啟動模式安卓模式
- Android之ActivityAndroid
- 如何在Android中實現懸浮ActivityAndroid
- Android開發中巧用Activity和FragmentAndroidFragment
- 深入理解Android 之 Activity啟動流程(Android 10)Android
- Android之Activity全面解析Android
- Android Apt之Activity RouteAndroidAPT
- Android開發藝術(1)——Activity的生命週期和啟動模式Android模式
- Android開發之Fragment動態使用AndroidFragment
- Android開發中如何結束所有的activityAndroid
- 《Android藝術開發探索》學習筆記之Activity的生命週期Android筆記
- 要點提煉|開發藝術之 Activity
- CSS之浮動FloatCSS
- [Android]關閉所有Activity,開啟某個ActivityAndroid
- 【Android開發入門教程】三.Activity入門指南!Android
- Android開發:定製Activity的標題欄(Titlebar)Android
- 原始碼閱讀之Activity啟動與App啟動流程 - Android 9.0原始碼APPAndroid
- 原始碼閱讀之Activity啟動與App啟動流程 – Android 9.0原始碼APPAndroid
- [Android]Android Activity 啟動模式詳解Android模式
- Android基礎之Activity全解析Android
- Android之Activity基類封裝Android封裝
- Android之Activity啟動流程詳解(基於api28)AndroidAPI
- Android面試官裝逼失敗之:Activity的啟動模式Android面試模式
- Android混合開發之WebView與Javascript互動AndroidWebViewJavaScript
- Android-Activity的啟動模式Android模式
- Android Activity的啟動過程Android
- Android Activity啟動模式全面解析Android模式
- Android 四大元件之 ActivityAndroid元件
- Android全面解析之Activity生命週期Android
- Android四大元件之ActivityAndroid元件
- Android 四大元件之 " Activity "Android元件
- android之兩個activity相互跳轉Android
- Android Home鍵之後啟動Activity延遲5sAndroid
- Android API開發之OpenGL開發之Android OpenGL STL詳解AndroidAPI
- Android 開發之 App 啟動時間統計AndroidAPP
- Android開發之HandlerAndroid