之前就想做这个底部弹出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>