自定义Dialog

应用场景:自定义Dialog

效果图:

1.创建Dialog对象

代码如下:

Dialog  dialog = new Dialog(CustomDialogActivity.this, R.style.CustomDialog);

注:

创建Dialog对象时,需传入两个参数:

第一个参数是:Activity对象;

第二个参数是:自定义的对话框style,它指向的是values文件夹下styles.xml文件中的如下代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- 自定义Dialog -->
    <style
        name="CustomDialog"
        parent="@android:Theme.Dialog">
        <!--windowFrame框为无 -->
        <item
            name="android:windowFrame">@null</item>
        <!-- 没有标题栏 -->
        <item
            name="android:windowNoTitle">true</item>
        <!-- 除去背景 -->
        <item
            name="android:windowBackground">@null</item>
        <!--是否浮现在activity之上 -->
        <item
            name="android:windowIsFloating">true</item>
        <!-- 是否半透明 -->
        <item
            name="android:windowIsTranslucent">false</item>
        <!-- 去掉覆盖层 -->
        <item
            name="android:windowContentOverlay">@null</item>
        <!-- 设置背景颜色 -->
        <item
            name="android:background">#262626</item>
    </style>
</resources>

2.layout文件夹下创建dialog_view.xml文件

代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#000000">
    <TextView
        android:id="@+id/promptTv"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15.0dip"
        android:gravity="center"
        android:textSize="16.0sp"
        android:textColor="#FFFFFF" 
        android:text="@string/promptText"/>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingTop="20.0dip"
        android:paddingBottom="20.0dip"
        android:gravity="center">
        <Button
            android:id="@+id/dialog_positive_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="@string/ok"/>
        <Button
            android:id="@+id/dialog_negative_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="@string/cancel"/>
    </LinearLayout>
</LinearLayout>

注:然后,将布局文件设置到Dialog

代码如下:

dialog.setContentView(R.layout.dialog_view);// 为对话框设置自定义布局

3.Window对象进行自定义设置

代码如下:

Window window = dialog.getWindow();// 获取Window对象
window.setGravity(Gravity.CENTER);// 居中显示
window.setWindowAnimations(R.style.dialogWindowAnim); // 设置窗口动画
window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);

注:对话框动画实现代码如下(代码在values文件夹下styles.xml文件中):

<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Dialog动画 -->
    <style
        name="dialogWindowAnim"
        parent="android:Animation">
        <!-- 进入时的动画 -->
        <item
            name="android:windowEnterAnimation">@anim/dialog_enter_anim</item>
        <!-- 退出时的动画 -->
        <item
            name="android:windowExitAnimation">@anim/dialog_exit_anim</item>
    </style>
</resources>

4.最后调用show方法显示Dialog

代码如下:

dialog.show();

posted on 2012-09-24 18:32  Harvey Ren  阅读(777)  评论(1编辑  收藏  举报

导航