public Dialog createDialog(Context context, int style) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); LinearLayout dialogView = (LinearLayout) inflater.inflate(R.layout.play_mode, null); final Dialog customDialog = new Dialog(context, style); WindowManager.LayoutParams localLayoutParams = customDialog.getWindow().getAttributes(); localLayoutParams.gravity = Gravity.BOTTOM | Gravity.LEFT; localLayoutParams.x = outsideMenuWidth; localLayoutParams.y = 0; int screenWidth = ((Activity) context).getWindowManager().getDefaultDisplay().getWidth(); dialogView.setMinimumWidth(screenWidth - outsideMenuWidth); // dialogView.setMinimumHeight(10); customDialog.onWindowAttributesChanged(localLayoutParams); customDialog.getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); customDialog.setCanceledOnTouchOutside(false); customDialog.setCancelable(true); customDialog.setCanceledOnTouchOutside(true); customDialog.setContentView(dialogView); if (context instanceof Activity) { Activity activity = (Activity) context; if (!activity.isFinishing()) { customDialog.show(); } } return customDialog; }
dialog样式:
<style name="custom_dialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowAnimationStyle">@style/dialog_animation</item> <item name="android:backgroundDimEnabled">true</item> </style> <style name="custom_dialog2" parent="custom_dialog"> <item name="android:windowBackground">@drawable/play_mode_bg</item> </style> <style name="dialog_animation" parent="@android:style/Animation.Dialog"> <item name="android:windowEnterAnimation">@anim/push_bottom_in</item> <item name="android:windowExitAnimation">@anim/push_bottom_out</item> </style>
进入和退出动画:
push_bottom_in.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="200" android:fromYDelta="100%p" android:toYDelta="0" /> <alpha android:duration="500" android:fromAlpha="0.0" android:toAlpha="1.0" /> </set>
push_bottom_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="500" android:fromYDelta="0" android:toYDelta="50%p" /> <alpha android:duration="200" android:fromAlpha="1.0" android:toAlpha="0.0" /> </set>