1. 程式人生 > >Android打造萬能的對話方塊Dialog(一)

Android打造萬能的對話方塊Dialog(一)

打造萬能的Dialog(一)

首先宣告一下,封裝框架,我習慣性的把佈局和程式碼分離開來,因為我個人覺得這樣的耦合性可以降到最低,但是可能會造成重複寫佈局的問題

  • 就是一個簡單的實現

首先我們從最基本的入手

先上圖,看圖說話

這裡寫圖片描述

上面介面是我們開發中經常會用的底部彈出對話方塊,分享功能也經常會使用到此樣式的對話方塊,那麼我們怎麼才能用最簡單的方式進行實現呢?

第一步

我們從最簡單的入手,佈局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#fff">
<TextView android:id="@+id/tv_take_photo" android:layout_width="match_parent" android:layout_height
="50dp" android:text="拍攝" android:gravity="center" android:textSize="16sp" android:textColor="@color/color_text_black"/>
<View android:layout_width="match_parent" android:layout_height="1dp" android:background="@color/color_bg_gray"/> <TextView
android:id="@+id/tv_take_pic" android:layout_width="match_parent" android:layout_height="50dp" android:text="從手機相簿選擇" android:gravity="center" android:textSize="16sp" android:textColor="@color/color_text_black"/>
<View android:layout_width="match_parent" android:layout_height="5dp" android:background="@color/color_bg_gray"/> <TextView android:id="@+id/tv_cancel" android:layout_width="match_parent" android:layout_height="50dp" android:text="取消" android:gravity="center" android:textSize="16sp" android:textColor="@color/color_text_black"/> </LinearLayout>

第二步

對話方塊方法的提示框:

private void showBottomDialog(){
        //1、使用Dialog、設定stytle
        final Dialog dialog = new Dialog(this,R.style.DialogTheme);
        //2、設定佈局
        View view = View.inflate(this,R.layout.dialog_photo,null);
        dialog.setContentView(view);

        Window window = dialog.getWindow();
        //設定彈出位置
        window.setGravity(Gravity.BOTTOM);
        //設定彈出動畫
        window.setWindowAnimations(R.style.main_menu_animstyle);
        //設定對話方塊大小
        window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
        dialog.show();

        dialog.findViewById(R.id.tv_take_photo).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dialog.dismiss();
            }
        });

        dialog.findViewById(R.id.tv_take_pic).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dialog.dismiss();
            }
        });

        dialog.findViewById(R.id.tv_cancel).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dialog.dismiss();
            }
        });

    }

第三步

設定動畫以及stytle,這個簡略寫一下,比較簡單、不明白的看Demo:

<style name="DialogTheme" parent="@android:style/Theme.Dialog">
        <!-- 邊框 -->
        <item name="android:windowFrame">@null</item>
        <!-- 是否浮現在activity之上 -->
        <item name="android:windowIsFloating">true</item>
        <!-- 半透明 -->
        <item name="android:windowIsTranslucent">true</item>
        <!-- 無標題 -->
        <item name="android:windowNoTitle">true</item>
        <item name="android:background">@android:color/transparent</item>
        <!-- 背景透明 -->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!-- 模糊 -->
        <item name="android:backgroundDimEnabled">true</item>
        <!-- 遮罩層 -->
        <item name="android:backgroundDimAmount">0.5</item>
    </style>

    <!-- dialog的動畫 -->
    <style name="main_menu_animstyle">
        <!-- windowEnterAnimation 進入的動畫 -->
        <!--  程式碼裡面 -->
        <item name="android:windowEnterAnimation">@anim/photo_dialog_in_anim</item>
        <item name="android:windowExitAnimation">@anim/photo_dialog_out_anim</item>
    </style>

總結

看到這裡,你們是不是覺得這個太EASY,不需要華麗的外表,就是一個簡單的實現,通俗易懂,下一篇實現簡單的封裝

原始碼下載

原始碼下載

相關推薦

Android打造萬能對話方塊Dialog()

打造萬能的Dialog(一) 首先宣告一下,封裝框架,我習慣性的把佈局和程式碼分離開來,因為我個人覺得這樣的耦合性可以降到最低,但是可能會造成重複寫佈局的問題 就是一個簡單的實現 首先我們從最基本的入手 先上圖,看圖說話

Android打造萬能對話方塊Dialog(二)

打造萬能的對話方塊Dialog(二) 不要問我為什麼就這麼點破東西分兩篇來寫,但是我會告訴你還有第三篇的,哈哈哈: 就是一個簡單封裝,同上篇,但是你會發現太好用了,媽媽再也不用擔心我以後的對話方塊了 首先回顧一下上篇 不說話,先貼圖

Android打造萬能對話方塊Dialog(三)

打造萬能的對話方塊Dialog(三) 已經寫了兩篇了,這下來一篇高階點的,仿照AlertDialog封裝我們想要的Dialog的對話方塊 具體那種方式跟適合你,你自己來選,不過如果只是為了簡單實用,我感覺上一篇的封裝方式也許更合適 先看圖,沒圖

android去掉對話方塊Dialog頂部標題欄

//對話方塊 CloseAppDialog dialog = new CloseAppDialog(context);

FlycoDialog 簡單實用的自定義Android彈窗對話方塊Dialog

效果圖鎮樓 FlycoDialog是一款非常棒的彈窗對話方塊處理框架,今天在這裡主要講一下他的自定義彈出對話方塊的功能,這裡以第二幅效果圖為例,圖片已經放在部落格最下方,X號自己隨便找一個東西代替吧。 首先我們還是先新增依賴

android開發 -- 對話方塊 Dialog 和 DialogFragment 詳解( Android 官方推薦 DialogFragment 建立對話方塊

 Android 官方推薦使用 : DialogFragment 建立對話方塊 ,不推薦直接使用Dialog建立對話方塊,所以能用寫對話方塊儘量用DialogFragment。自定義對話方塊也方便很多 推薦一篇DialogFragment的文章:http://blog.csdn.n

Android之UI--打造萬能自定義Dialog

在我們開發app的時候,很多地方需要彈出一個對話方塊,我們要不就直接用系統的Dialog或者就是AlertDialog,但是美工給我們的效果圖片很多都是無法去實現的。接下來我們來看下自定義Dialog的使用方法:首先我給大家展示2個圖片: 上面的

Android實現自定義圓角對話方塊Dialog

前言:   專案中多處用到對話方塊,用系統對話方塊太難看,就自己寫一個自定義對話方塊。         對話方塊包括:1、圓角         2、app圖示 , 提示文字,關閉對話方塊的"確定"按鈕   難點:1、對話方塊邊框圓角顯示      2、考慮到提示文字字數不確定,在不影響美觀的情況下,需要在一

android 8種對話方塊Dialog)使用方法彙總

目錄 1.寫在前面2.程式碼示例 2.1 普通Dialog(圖1與圖2) 2.2 列表Dialog(圖3) 2.3 單選Dialog(圖4) 2.4 多選Dialog(圖5) 2.5 等待Dialog(圖6) 2.6 進度條Dialog(圖7) 2.7 編輯Dialog(圖8) 2.8 自定義Dialo

(轉)Android 開發 對話方塊Dialog dismiss和hide方法的區別

原地址:https://www.pocketdigi.com/20120815/900.html dismiss和hide方法都可以隱藏對話方塊,在需要的時候也可以用show方法呼叫顯示。但是,這兩者是有區別的。 dismiss方法會釋放對話方塊所佔的資源,而hide

Android中的對話方塊(AlertDialog)

建立android中分體式對話方塊需要四個步驟: 第一:獲得AlertDialog的靜態內部類Builder物件,有該類建立對話方塊。 第二:通過Builder物件設定對話方塊的標題,按鈕UI及將要響應的事件。、 第三:呼叫Builder的Create()方法建立對對話方塊 第四

WPF中的對話方塊 Dialog

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

實現對gridview刪除行時彈出確認對話方塊種簡單方法

首先,在GridView的屬性對框話框中點選“Columns”進入它的“欄位”設計器。接著在“欄位”設計器中選擇以前已加上的那個CommandField“刪除”列,這時在它的屬性列表下會看到一個“將此它段轉換為 TemplateFied”的項,點選將它轉換為TemplateFied列。完後退出該欄位設計器,切

Java的GUI學習十(彈出對話方塊Dialog)

我愛樓主真的哈哈哈哈學習來自 http://www.cnblogs.com/xingyunblog/p/3870207.html import java.awt.Button; import java.awt.Dialog; import java.awt.FlowLayout; import

android模式進度對話方塊(ProgressDialog)的呼叫方法

public class MainActivity extends AppCompatActivity {     @BindView(R.id.button2)     Button button2;     @BindView(R.id.button1)     TextView

Android AlertDialog ————普通對話方塊

對話方塊沒啥注意的,使用的時候,要主要上下文使用this //彈出一個普通對話方塊 private void showNormalDialog() { //[1]構造對話方塊的例項 AlertDialog.Builder builder = new Bui

PyQt5顯示對話方塊Dialog 程式碼例項

Table of Contents PyQt5對話方塊有很多種,從PyQt5類關係圖中可以看出,常用的有QMessageBox, QInputDialog,QFontDialog, QFileDialog, QColorDialog等。本文主要是用兩種方法來演示

EasyUI 動態建立對話方塊Dialog

// 拒絕審批通過 function rejectApproval() { // 建立填寫審批意見對話方塊 $("<div id='reject-comment'> </div>").dialog({ ti

android自定義對話方塊去除黑底

在做Android開發中經常會使用到自定義樣式的Dialog,尤其是在遊戲當中,大家通常都是通過自定義一個佈局檔案來設定Dialog中顯示的內容,但是僅僅這樣還是不行的~會有黑色的框和白色的邊。這就需要我們自定義Dialog的樣式了。 首先上圖: 首先是Dialog的

Android之Builder對話方塊的一些常用方式

    Android為我們提供幾種對話方塊,主要有:AlertDialog、ProgressDialog、DataPickerDialog、TimePickerDialog。     AlertDialog,是具有0-3個按鈕,還可以可以放置選項、複選框單選框或自定義佈局等