日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

扩展Snackbar 使其支持居中显示

發(fā)布時間:2024/1/17 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 扩展Snackbar 使其支持居中显示 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

https://github.com/nispok/snackbar

默認Snackbar支持底部或者頂部顯示,不支持居中顯示

查看Snackbar.java的源碼可以看到createMarginLayoutParams方法中有位置的處理SnackbarPosition ,

針對不同的顯示位置設置對應的params規(guī)則,這里我們將表示位置的枚舉SnackbarPosition中添加一種類型PARENT_CENTER

public static enum SnackbarPosition {TOP(Gravity.TOP), BOTTOM(Gravity.BOTTOM), BOTTOM_CENTER(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL), PARENT_CENTER(Gravity.CENTER_VERTICAL); }

createMarginLayoutParams方法中部分邏輯修改如下:

else if (viewGroup instanceof RelativeLayout) {RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(width, height);if (position == SnackbarPosition.TOP)params.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);else if(position == SnackbarPosition.BOTTOM)params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);else if(position == SnackbarPosition.PARENT_CENTER)params.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);return params;}

?

如果viewgGroup的類型不是RelativeLayout,也可以不修改createMarginLayoutParams方法中的邏輯。

?

因為,提示條在中間顯示默認位移的動畫效果有些突兀,這里我們修改下居中顯示時的動畫效果,修改為透明度動畫。

修改兩個獲取動畫資源函數(shù):

/*** @param snackbarPosition* @return the animation resource used by this {@link com.nispok.snackbar.Snackbar} instance* to enter the view*/@AnimRespublic static int getInAnimationResource(SnackbarPosition snackbarPosition) {return snackbarPosition == SnackbarPosition.TOP ? R.anim.sb__top_in :(snackbarPosition == SnackbarPosition.PARENT_CENTER ? R.anim.sb__center_in : R.anim.sb__bottom_in);}/*** @param snackbarPosition* @return the animation resource used by this {@link com.nispok.snackbar.Snackbar} instance* to exit the view*/@AnimRespublic static int getOutAnimationResource(SnackbarPosition snackbarPosition) {return snackbarPosition == SnackbarPosition.TOP ? R.anim.sb__top_out :(snackbarPosition == SnackbarPosition.PARENT_CENTER ? R.anim.sb__center_out : R.anim.sb__bottom_out);}

anim文件夾下增加sb__center_in sb__center_out兩個配置文件如下:

sb__center_in.xml

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"><alpha xmlns:android="http://schemas.android.com/apk/res/android"android:duration="500"android:fromAlpha="0"android:interpolator="@interpolator/sb__decelerate_cubic"android:toAlpha="1" /> </set>

sb__center_out.xml

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"><alpha xmlns:android="http://schemas.android.com/apk/res/android"android:duration="500"android:fromAlpha="1"android:interpolator="@interpolator/sb__decelerate_cubic"android:toAlpha="0" /> </set>

?

在sample的示例代碼SnackSampleActivity中單行顯示文本的Snackbar的代碼修改如下:

singleLineButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {SnackbarManager.show(Snackbar.with(SnackbarSampleActivity.this).position(Snackbar.SnackbarPosition.PARENT_CENTER).margin(25).text("Center Single-line snackbar"));}});

?

最終顯示效果如下:

? ??

?

轉載于:https://www.cnblogs.com/sphere/p/7765887.html

總結

以上是生活随笔為你收集整理的扩展Snackbar 使其支持居中显示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。