Android 底部彈出Dialog(橫向滿屏)

来源:http://www.cnblogs.com/shenchanghui/archive/2016/11/21/6086314.html
-Advertisement-
Play Games

項目中經常需要底部彈出框,這裡我整理一下其中我用的比較順手的一個方式(底部彈出一個橫向滿屏的dialog)。 效果圖如下所示(只顯示關鍵部分): 步驟如下所示: 1.定義一個dialog的佈局(lay_share.xml) 1 <?xml version="1.0" encoding="utf-8" ...


項目中經常需要底部彈出框,這裡我整理一下其中我用的比較順手的一個方式(底部彈出一個橫向滿屏的dialog)。

效果圖如下所示(只顯示關鍵部分):

步驟如下所示:

1.定義一個dialog的佈局(lay_share.xml)

 1 <?xml version="1.0" encoding="utf-8"?>
 2 
 3 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:background="@color/white"
 7     android:orientation="vertical">
 8 
 9     <LinearLayout
10         android:layout_width="match_parent"
11         android:layout_height="wrap_content"
12         android:gravity="center_vertical"
13         android:orientation="horizontal"
14         android:paddingBottom="@dimen/padding_15"
15         android:paddingTop="@dimen/padding_15">
16 
17         <View
18             android:layout_width="0dp"
19             android:layout_height="0dp"
20             android:layout_weight="1" />
21 
22         <TextView
23             android:layout_width="wrap_content"
24             android:layout_height="wrap_content"
25             android:drawablePadding="@dimen/padding_5"
26             android:drawableTop="@mipmap/ic_weixin_share"
27             android:gravity="center"
28             android:text="微信"
29             android:textColor="@color/color_999999"
30             android:textSize="@dimen/text_14" />
31 
32         <View
33             android:layout_width="0dp"
34             android:layout_height="0dp"
35             android:layout_weight="1" />
36 
37         <TextView
38             android:layout_width="wrap_content"
39             android:layout_height="wrap_content"
40             android:drawablePadding="@dimen/padding_5"
41             android:drawableTop="@mipmap/ic_circle_share"
42             android:gravity="center"
43             android:text="朋友圈"
44             android:textColor="@color/color_999999"
45             android:textSize="@dimen/text_14" />
46 
47         <View
48             android:layout_width="0dp"
49             android:layout_height="0dp"
50             android:layout_weight="1" />
51 
52         <TextView
53             android:layout_width="wrap_content"
54             android:layout_height="wrap_content"
55             android:drawablePadding="@dimen/padding_5"
56             android:drawableTop="@mipmap/ic_weibo_share"
57             android:gravity="center"
58             android:text="微博"
59             android:textColor="@color/color_999999"
60             android:textSize="@dimen/text_14" />
61 
62         <View
63             android:layout_width="0dp"
64             android:layout_height="0dp"
65             android:layout_weight="1" />
66     </LinearLayout>
67 
68     <View
69         android:layout_width="match_parent"
70         android:layout_height="0.5dp"
71         android:layout_marginLeft="@dimen/padding_10"
72         android:layout_marginRight="@dimen/padding_10"
73         android:background="@color/color_c9c9c9" />
74 
75     <TextView
76         android:id="@+id/tv_cancel"
77         android:layout_width="match_parent"
78         android:layout_height="wrap_content"
79         android:gravity="center"
80         android:padding="@dimen/padding_15"
81         android:text="取消"
82         android:textColor="@color/color_666666"
83         android:textSize="@dimen/text_18" />
84 </LinearLayout>
View Code

2.定義彈出框彈出動畫(dialog_enter.xml)

1 <?xml version="1.0" encoding="utf-8"?>
2 <set xmlns:android="http://schemas.android.com/apk/res/android">
3     <translate
4         android:duration="300"
5         android:fromYDelta="100%p"
6         android:toYDelta="0" />
7 </set>
dialog_enter.xml

3.定義彈出框隱藏動畫(dialog_exit.xml)

1 <?xml version="1.0" encoding="utf-8"?>
2 <set xmlns:android="http://schemas.android.com/apk/res/android">
3     <translate
4         android:duration="300"
5         android:fromYDelta="0"
6         android:toYDelta="100%p" />
7 </set>
dialog_exit.xml

4.定義動畫style

1 <!--彈出框動畫-->
2     <style name="share_animation" parent="android:Animation">
3         <item name="android:windowEnterAnimation">@anim/dialog_enter</item>
4         <item name="android:windowExitAnimation">@anim/dialog_exit</item>
5     </style>
View Code

5.定義對話框樣式

1 <!-- 對話框樣式 -->
2     <style name="dialog_bottom_full" parent="android:style/Theme.Dialog">
3         <item name="android:windowBackground">@android:color/transparent</item>
4         <item name="android:windowNoTitle">true</item>
5         <item name="android:windowIsFloating">true</item>
6         <item name="android:windowContentOverlay">@null</item>
7         <item name="android:scrollHorizontally">true</item>
8     </style>
View Code

6.最後,在需要從底部彈出dialog的地方,直接調用showDialog()方法

 1 /**
 2      * 顯示分享彈出框
 3      */
 4     private void showDialog() {
 5         if (mShareDialog == null) {
 6             initShareDialog();
 7         }
 8         mShareDialog.show();
 9     }
10 
11     /**
12      * 初始化分享彈出框
13      */
14     private void initShareDialog() {
15         mShareDialog = new Dialog(this, R.style.dialog_bottom_full);
16         mShareDialog.setCanceledOnTouchOutside(true);
17         mShareDialog.setCancelable(true);
18         Window window = mShareDialog.getWindow();
19         window.setGravity(Gravity.BOTTOM);
20         window.setWindowAnimations(R.style.share_animation);
21         View view = View.inflate(this, R.layout.lay_share, null);
22         view.findViewById(R.id.tv_cancel).setOnClickListener(new View.OnClickListener() {
23             @Override
24             public void onClick(View view) {
25                 if (mShareDialog != null && mShareDialog.isShowing()) {
26                     mShareDialog.dismiss();
27                 }
28             }
29         });
30         window.setContentView(view);
31         window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);//設置橫向全屏
32     }
View Code

大功告成!

收工!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、插件下載地址:http://www.chromein.com/search_livereload_1.html 2、谷歌瀏覽器啟用改插件 3、sublime 安裝livereload插件,安裝方法與其他插件一樣 4、點擊瀏覽器改小圖標邊實心 這樣就可以直接修改完html或者css保存,不需要刷新 ...
  • ...
  • <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, mi ...
  • <!-- ////////////////////////// 請款列表模板 開始--><div id="rtlist-temple"> <div class="list-box m-top-20"> <div class="list-title font-size-26 clearfix"> <s ...
  • 優美整潔的代碼,基本都需要遵循以下的幾大基本原則. 1.單一職責原則SRP (Single Responsibility Principle) 類,模塊,方法應該有且僅有一條修改的理由.也就是說,其僅僅負責一個功能,只有這個功能發生變化時,才需要修改它. 舉個慄子:人類 有 吃飯的方法,那麼這個方法 ...
  • 說到RecyclerView,相信大家都不陌生,它是我們經典級ListView的升級版,升級後的RecyclerView展現了極大的靈活性。同時內部直接封裝了ViewHolder,不用我們自己定義ViewHolder就能實現item的回收和復用功能。當然它肯定不止這些好處,比如我們可以自定義分割線,... ...
  • 1、打開CornerStone,找到偏號設置,找到Subversion選項 2、去看“Use default global ignores”前面的“勾”,刪除".a" 3、github上搜索“gitignore”,找到"Objective-C.gitignore",打開,對照著添加 4、添加以下幾項 ...
  • 一、寫在最前面 本次,來介紹一下安卓中為控制項--Button綁定事件的五種方式。 二、具體的實現 第一種:直接綁定在Button控制項上: 步驟1.在Button控制項上設置android:onClick=",其中這個屬性的屬性值對應的是MainActivity類中的方法名字(自己創建的方法): 步驟2 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...