第一步定义动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromYDelta="100%p"
android:toYDelta="0" />
<alpha
android:duration="300"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
第二部
<style name="DataSheetAnimation" parent="@android:style/Animation.Dialog">
<item name="android:windowEnterAnimation">@anim/push_up_in</item>
</style>
第三部
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MMTheme.DataSheet" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<!-- <item name="android:background">@drawable/</item> -->
<item name="android:windowBackground">@color/transparent</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowAnimationStyle">@style/DataSheetAnimation</item>
</style>
</resources>
半透明颜色值是
<color name="transparent">#66000000</color>
最后一步
final Dialog dlg = new Dialog(context, R.style.MMTheme_DataSheet);//加载动画和半透明背景
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.alert_dialog_menu_layout, null);
final int cFullFillWidth = 10000; //沾满屏幕宽
layout.setMinimumWidth(cFullFillWidth);
Window w = dlg.getWindow();
WindowManager.LayoutParams lp = w.getAttributes();
lp.x = 0;
final int cMakeBottom = -1000;
lp.y = cMakeBottom;
lp.gravity = Gravity.BOTTOM;
dlg.onWindowAttributesChanged(lp);
dlg.setCanceledOnTouchOutside(true);
dlg.setContentView(layout);
dlg.show();