您的位置:首页 > 移动开发 > Android开发

Android——非常好用、简单实用的通用dialog实现方法

2017-10-18 17:02 465 查看
Android中实现dialog的思路方法有很多,默认的、自定义的都有很多方法,每一次都得修修改改,如何偷懒呢?

难道就没有一种通用的dialog吗?

终于,不负众望,不辱使命……

还是先来效果图:



Step1:

创建fragment继承DialogFraagment,如果想点击,就自行实现方法即可;

public class xxx extends DialogFragment implements View.OnClickListener{

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// 使用不带Theme的构造器, 获得的dialog边框距离屏幕仍有几毫米的缝隙。
Dialog dialog = new Dialog(getActivity(), R.style.BottomDialog);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); // 设置Content前设定
dialog.setContentView(R.layout.xxx);
dialog.setCanceledOnTouchOutside(true); // 外部点击取消
// 设置宽度为屏宽, 靠近屏幕底部。
final Window window = dialog.getWindow();
window.setWindowAnimations(R.style.AnimBottom);
final WindowManager.LayoutParams lp = window.getAttributes();
lp.gravity = Gravity.BOTTOM; // 紧贴底部
lp.width = WindowManager.LayoutParams.MATCH_PARENT; // 宽度持平
lp.height = (int) (getActivity().getWindowManager().getDefaultDisplay().getHeight() * 0.67);
window.setAttributes(lp);

initView(dialog);

return dialog;
}

private void initView(Dialog dialog) {
...
}

@Override
public void onClick(View view) {

}
}


<style name="AnimBottom" parent="@android:style/Animation">
<item name="android:windowEnterAnimation">@anim/push_bottom_in</item>
<item name="android:windowExitAnimation">@anim/push_bottom_out</item>
</style>

<!--底部弹框-->
<style name="BottomDialog" parent="@style/AppTheme">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">true</item>
</style>


Step 2:调用

xxxFragment fragment=new xxxFragment();
fragment.show(getCurActivity().getSupportFragmentManager(),"xxxFragment");


搞定了,只需要替换布局文件就行了;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: