比如,修改QQ头像时弹窗的样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" android:background="#fff" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:text="拍摄" android:layout_width="match_parent" android:layout_height="48dp" android:textSize="18sp" android:textStyle="bold" android:textColor="#000000" android:gravity="center"/> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="@android:color/darker_gray"/> <TextView android:text="相册选择" android:layout_width="match_parent" android:layout_height="48dp" android:textSize="18sp" android:textStyle="bold" android:textColor="#000000" android:gravity="center"/> <View android:layout_width="match_parent" android:layout_height="5dp" android:background="@android:color/darker_gray"/> <TextView android:text="取消" android:layout_width="match_parent" android:layout_height="48dp" android:textSize="18sp" android:textStyle="bold" android:textColor="#000000" android:gravity="center"/> </LinearLayout>
|
进入动画和退出动画
进入动画
1 2 3 4 5 6 7 8 9
| <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="300" android:fromXDelta="0" android:fromYDelta="1000" android:toXDelta="0" android:toYDelta="0"/> </set>
|
推出动画
1 2 3 4 5 6 7 8 9
| <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="300" android:fromXDelta="0" android:fromYDelta="0" android:toYDelta="1000" android:toXDelta="0"/> </set>
|
样式和动画
在styles.xml中定义dialog的样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <style name="DialogStyle" parent="@android:style/Theme.Dialog"> <item name="android:windowIsTranslucent">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimAmount">0.5</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:windowNoTitle">true</item> <item name="android:windowFrame">@null</item> </style>
|
上边这是抄的别人的,其实我觉得没这么麻烦,可能是因为我的sdk版本不同吧,在我的@andorid:style/Theme.Dialog父样式中,有几个属性是自然存在的,所以不需要再次申明
甚至只存在一个“背景颜色”,显示依然正常
1 2 3 4 5 6 7 8 9
| <style name="DialogStyle" parent="@android:style/Theme.Dialog"> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimAmount">0.5</item> </style>
|
添加进入动画和退出动画
1 2 3 4 5
| <style name="dialog_anim"> <item name="android:windowEnterAnimation">@anim/dialog_in</item> <item name="android:windowExitAnimation">@anim/dialog_out</item> </style>
|
调用弹窗显示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public void showDialog(View view) {
Dialog dialog = new Dialog(this,R.style.DialogStyle);
View view1 = View.inflate(this,R.layout.dialog,null); dialog.setContentView(view1);
Window window = dialog.getWindow(); window.setGravity(Gravity.BOTTOM); window.setWindowAnimations(R.style.dialog_anim);
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT); dialog.show();
}
|
效果