Android中可用于实现对话框的有Dialog,PopupWindow,Activity。Dialog和PopupWindow的区别和使用已经在其他的博客中说明过了,连接:http://blog.csdn.net/pcaxb/article/details/46678621 , Activity与其他两个不同,她有自己的生命周期,在某些情况下需要使用Activity作为弹出式对话框。
1.在res/value文件夹下的style.xml文件中加入如下代码:
<style name="activitydialog">
<!-- 去黑边 -->
<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">@null</item>
<!--窗口背景 -->
<item name="android:windowBackground">@android:color/transparent</item>
<!--是否变暗 -->
<item name="android:backgroundDimEnabled">false</item>
<!--点击空白部分activity不消失 -->
<item name="android:windowCloseOnTouchOutside">false</item>
<!--动画设置 -->
<item name="android:windowAnimationStyle">@style/Anim_scale</item>
</style>
动画设置的样式
<style name="Anim_scale" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/scale_in</item>
<item name="android:activityOpenExitAnimation">@anim/scale_out</item>
<item name="android:activityCloseEnterAnimation">@anim/scale_in</item>
<item name="android:activityCloseExitAnimation">@anim/scale_out</item>
</style>
2.在res/anim文件夹下新建动画文件,代码如下:
在res的anim中新建文件scale_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<scale
android:fromXScale="1.0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:duration="200"
android:pivotX="0"
android:pivotY="10%"/>
</set>
在res的anim中新建文件scale_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<scale
android:fromXScale="1.0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXScale="1.0"
android:fromYScale="1.0"
android:toYScale="0.0"
android:duration="200"
android:pivotX="0"
android:pivotY="10%"/>
</set>
3.设置对话框Activity的代码
public class DialogActivityTest extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.cs);
}
//设置触摸关闭
@Override
public boolean onTouchEvent(MotionEvent event){
finish();
return true;
}
}
4.在AndroidMainifest.xml中Activity的声明中加入
<activity
android:name="com.example.applicationtext.TestActivity"
android:theme="@style/MyDialogTopRight"
></activity>
整个过程的效果图:
扩展:自定义Activity的窗口背景
1.在res/drawable文件夹下新建float_act.xml文件,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffffff" />
<stroke android:width="3dp" android:color="#ff000000" />
<corners android:radius="3dp" />
<padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" />
</shape>
2.背景设置代码
<!-- float_act.xm为我们定义的窗口背景 ,这个不是必须的-->
<item name="android:windowBackground">@drawable/float_act</item>
整个过程的效果图:
Activity设置成对话框的东西大概就说到这里,里面有一些需要灵活的改动的,欢迎大家学习。