在Android開發中,有很多情況下我們需要使用到對話框,遺憾的是,安卓自帶的對話框樣式不能滿足我們實際的需要,所以往往需要我們自定義對話框,具體做法:寫一個對話框繼承自Dialog實現他的一個構造方法(取決於你的用法),在OnCreate()中進行處理。當然更多情況下,你是不需要自己去寫的,會抄代碼一樣也是一種本事,這里我介紹一種底部彈出的對話框,希望對你的學習和工作有所幫助,下面是效果圖:
下面介紹具體做法:
導入依賴庫:
dependencies { compile 'com.github.rey5137:material:1.2.2' }
這是GitHup上一個基於Material Design的依賴庫,對於這個庫進行了優化。
下面是實現代碼:
bottomInterPasswordDialog = new BottomSheetDialog(HomeActivity.this);
bottomInterPasswordDialog
.contentView(viewInterPassword)
.heightParam(windowHight/3)
.inDuration(500)
.outDuration(500)
.inInterpolator(new BounceInterpolator())
.outInterpolator(new AnticipateInterpolator())
.cancelable(true)
.show();
一行代碼,輕松實現,contentView加入DIalog的View,inDuration進入屏幕時間,inInterpolator進入屏幕動畫,cancelable,是否點擊可以退出對話框,heightParam顯示DIalog的高度。其中 Interpolator
在安卓中有幾個定義:
AccelerateDecelerateInterpolator 在動畫開始與結束的地方速率改變比較慢,在中間的時候加速
AccelerateInterpolator 在動畫開始的地方速率改變比較慢,然后開始加速
AnticipateInterpolator 開始的時候向后然后向前甩
AnticipateOvershootInterpolator 開始的時候向后然后向前甩一定值后返回最后的值
BounceInterpolator 動畫結束的時候彈起
CycleInterpolator 動畫循環播放特定的次數,速率改變沿着正弦曲線
DecelerateInterpolator 在動畫開始的地方快然后慢
LinearInterpolator 以常量速率改變
OvershootInterpolator 向前甩一定值后再回到原來位置
當然,如果這些滿足不了你的需求,你還可以自己定義。具體很簡單,我這里就不多說,希望這篇博客對你有所幫助,如果有疑問歡迎下方留言。