欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android重要控件SnackBar使用方法詳解

 更新時間:2016年07月13日 11:39:05   作者:Fndroid  
這篇文章主要為大家詳細介紹了Android重要控件SnackBar使用方法,以及使用SnackBar的心得,感興趣的小伙伴們可以參考一下

SnackBar是DesignSupportLibrary中的一個重要的控件,用于在界面下面提示一些關鍵信息,跟Toast不同的地方是SnackBar允許用戶向右滑動消除它,同時,也允許在SnackBar中設定一個Action,當用戶點擊了SnackBar里面的按鈕的時候,可以進行一些操作,所以,功能絕對是很強大的。 

SnackBar的構(gòu)造: 

// 參數(shù)分別是父容器,提示信息,持續(xù)時間public static Snackbar make(@NonNull View view, @NonNull CharSequence text,@Duration int duration) 

SnackBar的常用方法: 

// 用于給SnackBar設定一個Action,點擊之后會回調(diào)OnclickListener中的Onclick方法public Snackbar setAction(CharSequence text, final View.OnClickListener listener) 
// 用于設定Action的字體顏色public Snackbar setActionTextColor(@ColorInt int color) 
// 設定提示的字體public Snackbar setText(@NonNull CharSequence message) 
// 展示SnackBarpublic void show() 
// 清除SnackBarpublic void dismiss() 
// 設置回調(diào),比如OnDismissed或者OnShownpublic Snackbar setCallback(Callback callback) 

簡單是使用就不說了,這里直接說一下設置Action和設置Callback
要求:實現(xiàn)一個撤銷的操作,用戶點擊列表中每一項的刪除按鈕之后,刪除(數(shù)據(jù)庫中)對應的行,然后彈出SnackBar提示是否撤銷,如果選擇是,則恢復刪除的行,否則刪除該行,效果如下 

思路: 
①先對我們要刪除的這個行進行備份,然后在點擊刪除按鈕的時候把行刪除,把數(shù)據(jù)從源刪除,然后刷新 
②彈出SnackBar,設定Action,如果點了Yes,就把數(shù)據(jù)插入到源中,刷新 
③設定CallBack,監(jiān)聽SnackBar的消失事件,如果不是點擊Action而消失,則將數(shù)據(jù)從SQLite中刪除 
注意:這里為什么要設定監(jiān)聽?因為如果不進行監(jiān)聽,需要在刪除的時候訪問數(shù)據(jù)庫,撤銷是時候進行數(shù)據(jù)庫的插入操作,這樣列表中的條目位置會發(fā)生改變

我們可以在Adapter中對刪除按鈕進行監(jiān)聽,代碼如下:

delete.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    backupMap = mdata.get(position);
    mdata.remove(position);
    notifyDataSetChanged();
    Snackbar snackBar = Snackbar.make(root, "是否撤銷刪除?", Snackbar.LENGTH_LONG);
    snackBar.setAction("YES", new MyOnClickListener(position));
    snackBar.setCallback(new MyCallback());
    snackBar.show();
   }
  });

如果點擊了刪除按鈕,我們對數(shù)據(jù)進行備份,然后刪除數(shù)據(jù)源mdata對應的這個map,接下來刷新界面。然后第7行構(gòu)造了一個SnackBar,詢問是否撤銷刪除,并把持續(xù)時間設置為LONG以免用戶未閱讀完文字SnackBar就消失了。第8行設定了點擊的Action,提示信息為“YES”,并提供了點擊的監(jiān)聽。第9行設定了Callback,判斷SnackBar的消失狀態(tài)。第10行就直接把SnackBar展示出來。 

下面來看Action的點擊事件: 

private class MyOnClickListener implements View.OnClickListener {
  private final int position;

  public MyOnClickListener(int position) {
   this.position = position;
  }

  @Override
  public void onClick(View v) {
   mdata.add(position, backupMap);
   notifyDataSetChanged();
  }
 }

如果點擊了Action,就用備份的數(shù)據(jù)進行恢復
下面看Callback: 

private class MyCallback extends Snackbar.Callback {
  @Override
  public void onDismissed(Snackbar snackbar, int event) {
   super.onDismissed(snackbar, event);
   if (event == DISMISS_EVENT_SWIPE || event == DISMISS_EVENT_TIMEOUT || event ==
     DISMISS_EVENT_CONSECUTIVE) {
    mdatabase.execSQL("delete from tally where id=?", new String[]{backupMap.get
      ("id").toString()});
   }
  }
 }

這里看到我們重寫了onDismissed方法,在SnackBar消失的時候會回調(diào)這個方法,我們先判斷這個消失的類型,如果是點擊了Action,就不用刪除數(shù)據(jù)庫中的數(shù)據(jù),否則就對數(shù)據(jù)庫進行刪除。 
SnackBar消失的類型對應的常量: 

/** Indicates that the Snackbar was dismissed via a swipe.*/
public static final int DISMISS_EVENT_SWIPE = 0;
/** Indicates that the Snackbar was dismissed via an action click.*/
public static final int DISMISS_EVENT_ACTION = 1;
/** Indicates that the Snackbar was dismissed via a timeout.*/
public static final int DISMISS_EVENT_TIMEOUT = 2;
/** Indicates that the Snackbar was dismissed via a call to {@link #dismiss()}.*/
public static final int DISMISS_EVENT_MANUAL = 3;
/** Indicates that the Snackbar was dismissed from a new Snackbar being shown.*/
public static final int DISMISS_EVENT_CONSECUTIVE = 4; 


可以看到,從0到4分別是滑動清除、點擊Action、持續(xù)時間結(jié)束、調(diào)用dismiss方法以及有新的SnackBar產(chǎn)生
 因為每次SnackBar消失的時候都是調(diào)用了dismiss方法,所以我們只需要判斷此時的狀態(tài)是否為滑動清除、持續(xù)時間結(jié)束或者新的SnackBar產(chǎn)生,如果是,則證明用戶不需要撤銷,則對數(shù)據(jù)庫進行刪除。 
最后,如果使用SnackBar,記得添加依賴!!

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android仿微信實現(xiàn)首字母導航條

    Android仿微信實現(xiàn)首字母導航條

    這篇文章主要為大家詳細介紹了Android仿微信實現(xiàn)首字母導航條的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android手機通過藍牙連接佳博打印機的實例代碼

    Android手機通過藍牙連接佳博打印機的實例代碼

    這篇文章主要介紹了Android手機通過藍牙連接佳博打印機的實例代碼,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • Android開發(fā)中的數(shù)據(jù)庫事務用法分析

    Android開發(fā)中的數(shù)據(jù)庫事務用法分析

    這篇文章主要介紹了Android開發(fā)中的數(shù)據(jù)庫事務用法,分析了Android數(shù)據(jù)庫事務的功能、使用方法與相關注意事項,需要的朋友可以參考下
    2016-06-06
  • 總結(jié)Android中MD風格相關控件

    總結(jié)Android中MD風格相關控件

    自Android5.0發(fā)布以來,谷歌推出全新的Material Desigen設計風格,時過一年多了,在國內(nèi)也看到很多應用在慢慢適應MD設計風格。今天小編給大家總結(jié)下Android中MD風格相關控件的知識,有需要的可以參考學習。
    2016-08-08
  • Android創(chuàng)建Menu菜單實例

    Android創(chuàng)建Menu菜單實例

    這篇文章主要介紹了Android創(chuàng)建Menu菜單實例,講述了Android菜單項的創(chuàng)建方法,在Android應用程序開發(fā)中非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • Android源碼解析onResume方法中獲取不到View寬高

    Android源碼解析onResume方法中獲取不到View寬高

    這篇文章主要為大家介紹了Android源碼解析onResume方法中獲取不到View寬高示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Android拼圖游戲 玩轉(zhuǎn)從基礎到應用手勢變化

    Android拼圖游戲 玩轉(zhuǎn)從基礎到應用手勢變化

    這篇文章主要介紹了Android拼圖游戲的實現(xiàn)方法,教大家玩轉(zhuǎn)從基礎到應用手勢變化,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • android之listview懸浮topBar效果

    android之listview懸浮topBar效果

    這篇文章主要為大家詳細介紹了android之listview懸浮topBar效果的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Flutter?list?數(shù)組排序示例解析

    Flutter?list?數(shù)組排序示例解析

    這篇文章主要為大家介紹了Flutter?list?數(shù)組排序?qū)崿F(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Android實現(xiàn)圓角圖片

    Android實現(xiàn)圓角圖片

    這篇文章主要為大家詳細介紹了Android實現(xiàn)圓角圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01

最新評論