之前就想做这个底部弹出dialog的笔记,发现这篇已经写的很好,就搬过来方便自己看吧。
原文链接:http://www.cnblogs.com/xyc20080413/p/3461955.html
代码部分:
..... findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { createDialog(TestDialogActivity.this, R.style.custom_dialog); } }); ...... 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="200" android:fromYDelta="100%p" android:toYDelta="0" /> <alpha android:duration="500" android:fromAlpha="0.0" android:toAlpha="1.0" /> </set>