高級UI-Snackbar

在與用戶的交互中,最爲常用的Toast和Dialog,但二者都存在其侷限,Toast無法與用戶進行交互,Dialog雖然可以與用戶交互,但卻會阻斷用戶操作的連貫性,介於二者之間的平衡,Snackbar孕育而生

自定義Toast

首先我們來做一個自定義的Toast

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void showToast(View v) {
        //Toast.makeText(this,"toast show",Toast.LENGTH_SHORT).show();
        Toast result = new Toast(this);
        LayoutInflater inflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = inflate.inflate(R.layout.toast_layout, null);
        result.setView(view);
        result.setDuration(Toast.LENGTH_SHORT);
        result.show();
    }
}

toast_layout.xml就是一個簡單的圖片加文字的佈局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher_round" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="center"
        android:text="自定義Toast" />

</LinearLayout>

Snackbar使用

public void showSnackbar(View view) {
    //Snackbar.LENGTH_SHORT:短時間
    //Snackbar.LENGTH_LONG:長時間
    //Snackbar.LENGTH_INDEFINITE:不消失
    Snackbar snackbar = Snackbar.make(view,"是否關閉WIFI",Snackbar.LENGTH_INDEFINITE);
    //只能設置單個action
    snackbar.setAction("確定", new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showToast(v);
        }
    });
    snackbar.show();
}

Snackbar的使用其實很簡單,設置顯示內容,設置action,然後監聽就完事了
其主要優勢在於不會打斷用戶操作,保證用戶的使用體驗
項目效果如下:
Snackbar-實現

發佈了210 篇原創文章 · 獲贊 42 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章