1. 程式人生 > >Android中Dialog和Toast及其Snackbar的使用和區別

Android中Dialog和Toast及其Snackbar的使用和區別

一.Snackbar的使用

連線地址:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0714/3187.html
如果說Dialog和Toast是兩個極端的話,那麼Snackbar就是處於中間的位置了。Snackbar和Toast比較相似,但是用途更加廣泛,並且它是可以和使用者進行互動的。Snackbar使用一個動畫效果從螢幕的底部彈出來,過一段時間後也會自動消失。

在使用Snackbar之前,首先需要在app/build.gradle中新增相應的依賴:

dependencies {
compile ‘com.android.support:design:23.4.0’
}

然後就可以使用Snackbar了,它的用法和Toast是比較相似的:

Snackbar.make(view, “data deleted”,
Snackbar.LENGTH_LONG)
.setAction(“Undo”,
new View.OnClickListener(){
@Override
public void onClick(View v) {
}
})
.show();

這裡呼叫Snackbar的make()方法來建立一個Snackbar物件,make()方法的第一個引數需要傳入一個view,只要是當前介面佈局的任意一個view都可以,Snackbar會使用這個view來自動查詢最外層的佈局,用於展示Snackbar。第二個引數就是Snackbar中顯示的內容,第三個引數是Snackbar顯示的時長。這些和Toast都是類似的。

接著這裡又呼叫了一個setAction()方法來設定一個動作,從而讓Snackbar不僅僅是一個提示,而是可以和使用者進行互動的。最後呼叫show()方法讓Snackbar顯示出來。

可以看到,Snackbar的效果有點類似於Toast,不過它是從螢幕底部彈出來的。另外Snackbar上面可以加入和使用者互動的按鈕,比如刪除資料的時候給使用者一個Undo的選項,從這些小的細節方面都可以提升很多的使用者體驗。

二.三者的區別總結

現在你有三種方式可以給使用者提示資訊,Dialog、Toast和Snackbar,下面我們對這三種方式的使用時機做個總結吧。

Dialog:當提示資訊是至關重要的,並且必須要由使用者做出決定才能繼續的時候,使用Dialog。

Toast:當提示資訊只是告知使用者某個事情發生了,使用者不需要對這個事情做出響應的時候,使用Toast。

Snackbar:以上兩者之外的任何其他場景,Snackbar可能會是你最好的選擇。

三.自定義Dialog的使用

**總體的思路就是:

  • 第一點:我麼可以看做一個dialog是一個activity來理解,因為dialog可以自定義,自定義的時候,和anctivity很相似.
  • 第二點:我們通過setContetnView(view)來設定一個想要展示的view來作為自定義的dialog來展示出來.

-第三點:在設定自定義dialog的時候我們設定他的樣式

**具體的操作:**

- * 初始化自定義對話方塊的展示屬性:第一個屬性是展示的寬度,我們可以獲取展示的螢幕的寬度
DisplayMetrics displayMetrics=getcontex().getResourecs().getdisplaymetrices();這個類:Andorid.util 包下的DisplayMetrics 類提供了一種關於顯示的通用資訊,如顯示大小,解析度和字型。這個類中包含當前的寬度,獲取displayMetrics.width;就是我們需要設定給自定義dialog的屬性,最後自定義的對話方塊是展示在螢幕上面的,獲取視窗的屬性,設定dialog的屬性;屬性就包括對話方塊的展示的位置和對話方塊展示的寬度是怎麼樣子的.
- *獲取視窗的屬性:
WindowManager.LayoutParams params= getWindow().getAttributes();
- *設定位置 params.gravity = Gravity.bottom; 設定展示的位置
-*設定展示的寬度
params.width = displayMetrics.width;
-*引數變化後重新設定給我視窗
* getWindow()setAttributes(params)**

自定義dialog的程式碼:

`public class MykeyDialogDemo extends Dialog{
private Button mShow;
private Button mSend;
//首先是自定義對框的設定,第一點就是繼承dialog
//裡面的構造方法和一般的自定義控制元件是不相同的
//第一個引數實在直接new的時候獲取的
//第二個引數是直接定義了一個style來設定的,我們在這裡可以直接給自定義控制元件設定一個樣式:樣式中包包括的是背景和是自定義dialog
//是否是需要tittle後名就是在這行這個自定義的dialog的時候是的一些自定義的動畫,注意我們常見的自定義dialog是寬和高都是固定好的
//我們需要自定義初始化對話方塊的高度和位置
//就在設定自定義對話方塊的樣式扥那個構造方法裡面來設定,

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //轉化一個view
    View view = View.inflate(getContext(), R.layout.mdialogshowview, null);
    setContentView(view);
    //初始化對話方塊的一些展示屬性
    //獲取螢幕的寬度,設定展示的螢幕的資訊

//Andorid.util 包下的DisplayMetrics 類提供了一種關於顯示的通用資訊,如顯示大小,解析度和字型。

    DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
    //獲取框

    int widthPixels = metrics.widthPixels;
    // 獲取視窗管理
    //在獲視窗的屬性
    //設定屬性

    //將獲取的螢幕的寬度設定給自定義對話方塊的展示

    //重新設定屬性

    WindowManager.LayoutParams params = getWindow().getAttributes();
    params.gravity= Gravity.BOTTOM;

    params.width=widthPixels;
    getWindow().setAttributes(params);
    //初始化控制元件:
    mShow = (Button) view.findViewById(R.id.btn_show_emotion);
    //獲取傳送
    mSend = (Button) view.findViewById(R.id.btn_send);


}

public MykeyDialogDemo(Context context) {
    this(context,R.style.CustomDialog);
    //好處就是,在獲取自定義對話方塊的時候,程式碼獲取的時候只傳遞一個上下文,而不能指定樣式,我們在內部設定好了樣式

}

public MykeyDialogDemo(Context context, int themeResId) {
    super(context, themeResId);
}

public MykeyDialogDemo(Context context, boolean cancelable, OnCancelListener cancelListener) {
    super(context, cancelable, cancelListener);
}

}`

四.自定義Toast

參考圖片:
這裡寫圖片描述

相關推薦

AndroidDialogToast及其Snackbar的使用區別

一.Snackbar的使用 連線地址:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0714/3187.html 如果說Dialog和Toast是兩個極端的話,那麼Snackbar就是處

AndroidDialog的常用方法彙總自定義Dialog的步驟.txt

一、系統自帶Dialog對話方塊的使用: 警告框(AlertDialog)是在專案中出現的最簡單的一種對話方塊,主要的目的是為使用者顯示一條警告資訊,AlertDialog也是在對話方塊中使用最多的一個類,而且是Dialog的直接子類,此類繼承結構如下: j

DialogToastSnackbar區別使用

今天給大家帶來一篇簡單易懂的微技巧文章,並沒有什麼高深的技術點,但重點仍然是在細節,相信還是可以給不少朋友帶來幫助的。 Dialog和Toast所有人肯定都不會陌生的,這個我們平時用的實在是太多了。而Snackbar是Design Support庫中提供的新控制元件,有

Android的常見通信機制Linux的通信機制

另一個 mes TCP/IP 物理內存 ram 中一 最簡 雙工 erp Handler Handler是Android系統中的一種消息傳遞機制,起作用是應對多線程場景。將A進程的消息傳遞給B線程,實現異步消息處理。很多情況是將工作線程中需要更新UI的操作消息傳遞給UI主線

AndroidAPK簽名工具之jarsignerapksigner詳解

內容 value signature align light 文件簽名 item als release 一.工具介紹 jarsigner是JDK提供的針對jar包簽名的通用工具, 位於JDK/bin/jarsigner.exe apksigner是Google官方提

Android的Https網路請求getpost 不進行認證

HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer)是通過證書認證、資料加密打造的一條安全的HTTP通道,也就是安全版HTTP,一般在金融行業用到的比

Android監聽ScrollView滑動停止滑動到底部

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

AndroidFragment+Viewpager實現左右滑動點選

一.佈局檔案 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.view.ViewPager android:id="@+id/viewpager" andr

(轉)Android系統狀態列的隱藏顯示

Android中系統狀態列的隱藏和顯示 尤其視訊類APP,需要實現切換到橫屏後,隱藏系統狀態列,全屏顯示,以實現看更大畫面的視訊。當切換回豎屏後,又顯示狀態列。那麼如何實現呢? 網上流傳著很多種做法。比如:  1、在AndroidManifest.xml檔案中修改theme為andro

Android實現靜態的預設安裝解除安裝應用

                最近好長時間都沒有寫blog了,主要是因為最近工作上的事以及下載Android原始碼的事耽誤的(下載原始碼這件事會在後續的blog中寫道,這個真的很有意義呀~~),那麼今天來寫點什麼呢?主要的靈感來自於早上看新聞看到一篇文章說有一款應用在後臺中解除安裝使用者手機中的所有瀏覽器的

AndroidPath類的lineTo方法quadTo方法畫線的區別

   當我們需要在螢幕上形成畫線時,Path類的應用是必不可少的,而Path類的lineTo和quadTo方法實現的繪製線路形式也是不一樣的,下面就以程式碼的實現來直觀的探究這兩個方法的功能實現區別;    1. Path--->quadTo(float x1, fl

Android 資原始檔圖片轉 Bitmap Drawable 以及相互轉換的方法

Android 圖片轉換的方法總結: 一、Bitmap 轉換成 Drawable 對 Bitmap 進行強制轉換 Drawable drawable = new BitmapDrawable(bmp); 二、Drawable 轉換成 Bitmap 方法一 通過 BitmapFa

android泛型方法的用法作用

舉個例子 首先我的activity中  @Route(path = "/datainit/DataInitActivity") class DataInitActivity: BaseActivity(){ override fun onCreate(savedInstan

Android根據手機的解析度dppx之間的轉換

public class UnitUtil { /** * 根據手機的解析度從 dp 的單位 轉成為 px(畫素) */ public static int dp2px(Context context, float dpValue) { fina

Android的人臉檢測(靜態動態)

(1)背景。        Google 於2006年8月收購Neven Vision 公司 (該公司擁有10多項應用於移動裝置領域的影象識別的專利),以此獲得了影象識別的技術,並加入到android中。Android 中的人臉識別技術,用到的底層庫:android/ex

AndroidActivity四種啟動模式taskAffinity屬性詳解

在android應用開發中,打造良好的使用者體驗是非常重要的。而在使用者體驗中,介面的引導和跳轉是值得深入研究的重要內容。在開發中,與介面跳轉聯絡比較緊密的概念是Task(任務)和Back Stack(回退棧)。activity的啟動模式會影響Task和Back Stack

AndroidNDK的so檔案產生使用

使用工具:eclipse 1.生成so檔案 1.1.開啟Eclipse,新建一個Android工程 FileàNewàAndroid Application Project 一路Next下去,直到Finish。 1.2.新增so檔案 工程右鍵--Android Too

關於AndroidListView的addHeaderView()的方法ListView滑動不流暢的解決方法

xml佈局為ListView 呼叫ListView.addHeaderView(view)方法在ListView的上方新增其他元件,多次呼叫,則按順序從上向下羅列  其view是一個獨立的佈局檔案 如

Android SpannableStringBuilder控制區域性文字顏色點選事件

直接上程式碼 package com.lhl.qsmm.maskguidetest; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.s

Android檢查、監聽電量充電狀態的方法

當你在更改後臺更新頻率來減少這些更新對電池壽命的影響時,檢查當前電量和充電狀態是一個好的開始。 電池壽命通過剩餘電量和充電狀態來影響應用更新的執行。當用交流電充電時,執行更新操作對裝置的影響是微不足道的,所以在大多數案例裡,你可以把更新頻率調到最快。如果裝置不在充電,降低更新頻率可以幫助延長電池壽命。