Android?DialogFragment使用之基類封裝
關(guān)于安卓DialogFragment基類封裝
對(duì)于DialogFragment,在androidX 1.1.0后,已修復(fù)內(nèi)存泄漏
本文內(nèi)容較短,直接上干貨,核心代碼如下:
/**
* FileName: BaseDialogFragment
* Author: lzt
* Date: 2022/8/30 17:33
* 注意dialog fragment版本,1.1.0以上已修復(fù)內(nèi)存泄漏
*/
public abstract class BaseDialogFragment extends DialogFragment {
private int DEFAULT_WIDTH = WindowManager.LayoutParams.MATCH_PARENT;//寬
private int DEFAULT_HEIGHT = WindowManager.LayoutParams.WRAP_CONTENT;//高
private int DEFAULT_GRAVITY = Gravity.BOTTOM;//位置
private boolean mCancelable = true;//默認(rèn)可取消
private boolean mCanceledOnTouchOutside = true;//默認(rèn)點(diǎn)擊外部可取消
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View mView = inflater.inflate(getLayoutId(), container, false);
initViews(mView);
return mView;
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
Dialog mDialog = super.onCreateDialog(savedInstanceState);
if (null != mDialog) {//初始化
mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
mDialog.setCanceledOnTouchOutside(mCanceledOnTouchOutside);
mDialog.setCancelable(mCancelable);
Window window = mDialog.getWindow();
if (null != window) {
window.getDecorView().setPadding(0, 0, 0, 0);
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
WindowManager.LayoutParams lp = window.getAttributes();
lp.width = DEFAULT_WIDTH;
lp.height = DEFAULT_HEIGHT;
lp.gravity = DEFAULT_GRAVITY;
lp.windowAnimations = android.R.style.Animation_InputMethod;
window.setAttributes(lp);
}
mDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
return !mCancelable;
}
});
}
return mDialog;
}
/**
* 設(shè)置位置
* @param gravity
*/
public void setGravity(int gravity) {
DEFAULT_GRAVITY = gravity;
}
/**
* 設(shè)置寬
* @param width
*/
public void setWidth(int width) {
DEFAULT_WIDTH = width;
}
/**
* 設(shè)置高
* @param height
*/
public void setHeight(int height) {
DEFAULT_HEIGHT = height;
}
/**
* 設(shè)置點(diǎn)擊返回按鈕是否可取消
*
* @param cancelable
*/
public void setCancelable(boolean cancelable) {
mCancelable = cancelable;
}
/**
* 設(shè)置點(diǎn)擊外部是否可取消
*
* @param canceledOnTouchOutside
*/
public void setCanceledOnTouchOutside(boolean canceledOnTouchOutside) {
mCanceledOnTouchOutside = canceledOnTouchOutside;
}
/**
* 設(shè)置布局
*
* @return
*/
protected abstract int getLayoutId();
/**
* 初始化Views
*
* @param v
*/
protected abstract void initViews(View v);
}以上就是Android DialogFragment使用之基類封裝的詳細(xì)內(nèi)容,更多關(guān)于Android DialogFragment基類封裝的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android處理圖像數(shù)據(jù)轉(zhuǎn)換的各種方法
這篇文章主要介紹了Android處理圖像數(shù)據(jù)轉(zhuǎn)換的各種方法,本文講解了RGB值轉(zhuǎn)Bitmap、Color值轉(zhuǎn)Bitmap、字節(jié)數(shù)組轉(zhuǎn)Bitmap、讀取文件轉(zhuǎn)Bitmap、讀取資源轉(zhuǎn)Bitmap、輸入流轉(zhuǎn)Bitmap等內(nèi)容,需要的朋友可以參考下2015-01-01
android viewpager實(shí)現(xiàn)豎屏滑動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了android viewpager實(shí)現(xiàn)豎屏滑動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Android GridView不改變背景色實(shí)現(xiàn)網(wǎng)格線效果
這篇文章主要介紹了Android GridView不改變背景色實(shí)現(xiàn)網(wǎng)格線效果,需要的朋友可以參考下2016-03-03
Android開發(fā)Jetpack組件LiveData使用講解
LiveData是Jetpack組件的一部分,更多的時(shí)候是搭配ViewModel來(lái)使用,相對(duì)于Observable,LiveData的最大優(yōu)勢(shì)是其具有生命感知的,換句話說(shuō),LiveData可以保證只有在組件( Activity、Fragment、Service)處于活動(dòng)生命周期狀態(tài)的時(shí)候才會(huì)更新數(shù)據(jù)2022-08-08
Android添加指紋解鎖功能的實(shí)現(xiàn)代碼
當(dāng)開發(fā)的APP需要加密驗(yàn)證時(shí)可以考慮添加系統(tǒng)指紋解鎖功能。這篇文章主要介紹了Android添加指紋解鎖功能的實(shí)現(xiàn)代碼,需要的朋友可以參考下2018-07-07
Android實(shí)現(xiàn)自定義View控件的流程詳解
這篇文章主要為大家詳細(xì)介紹了Android中實(shí)現(xiàn)自定義View控件的流程,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2023-06-06

