Android——非常好用、简单实用的通用dialog实现方法
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");
搞定了,只需要替换布局文件就行了;