效果:
概览:
1. 首先需要定义两个滑进滑出的动画。
2. 定义Dialog的主题。
3. 触发dialog。
4. 注意。
正文:
1. 首先需要定义两个滑进滑出的动画。
滑进的动画slide_in_up.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_longAnimTime"
android:fromYDelta="50%p"
android:toYDelta="0%p" />
滑出的动画slide_out_down.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_longAnimTime"
android:fromYDelta="0%p"
android:toYDelta="100%p" />
2. 定义Dialog的主题。
<style name="DialogAnimation">
<item name="android:windowEnterAnimation">@anim/slide_in_up</item>
<item name="android:windowExitAnimation">@anim/slide_out_down</item>
</style>
<style name="DialogSlideAnim" parent="@android:style/Theme.Dialog">
<item name="android:windowAnimationStyle">@style/DialogAnimation</item>
<item name="android:windowBackground">@null</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
</style>
3. 触发dialog。
public void onClick(View view) {
Dialog dialog = new Dialog(GiftActivity.this,
R.style.DialogSlideAnim);
dialog.getWindow().setGravity(Gravity.BOTTOM);
dialog.setContentView(R.layout.activity_main);
dialog.setCanceledOnTouchOutside(true);
dialog.show();
}
4. 注意。
为了控制dialog 的宽度,需要在dialog 的contentView 中有view定义宽度。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<!-- 为了使dialog 占满整个屏幕宽度 -->
<View
android:layout_width="1000dp"
android:layout_height="0dp"
android:layout_gravity="center_horizontal" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:text="My coins" />
</LinearLayout>