Android第三十三期 - Dialog的应用

    今天遇到一个大难题哦,不过有大牛一眼就瞄出来了,然后就解决了,AlertDialog和Dialog自定义后圆角的处理,如果你跟我一样没有看到这些细节的话就栽了,用AlertDialog不能使得圆角背景透明化,所以要用Dialog处理才行,也就是下面的方法。

    Dialog:

private static Dialog mDialog;

	// 加载gridview中的item的xml方法
	public static View getView(Context context, int layoutId) {
		LayoutInflater inflater = (LayoutInflater) context
				.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		View layout = inflater.inflate(layoutId, null);
		return layout;
	}
/**
	 * 显示自定义对话框
	 * 
	 * @param context
	 * @param message
	 * @param listener
	 */
	public static void showDialog(final Context context, String message,
			final IAlertDialogButtonListener listener) {
		View dialogView = null;
		// Dialog.Builder builder = new Builder(context,
		// R.style.Theme_Transparent);
		mDialog = new Dialog(context, R.style.Theme_Transparent);

		dialogView = getView(context, R.layout.dialog_view);
		Button btn_ok = (Button) dialogView.findViewById(R.id.btn_ok);
		Button btn_cancel = (Button) dialogView.findViewById(R.id.btn_cancel);
		TextView txt_dailog_message = (TextView) dialogView
				.findViewById(R.id.txt_dailog_message);
		txt_dailog_message.setText(message);
		btn_ok.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// 关闭dialog
				if (mDialog != null) {
					mDialog.cancel();
				}
				// 事件回调
				if (listener != null) {
					listener.onClick();
				}

				// 播放音效
				// MyPlayer.playTone(context, MyPlayer.INDEX_STONE_ENTER);
			}
		});
		btn_cancel.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// 关闭dialog
				if (mDialog != null) {
					mDialog.cancel();
				}
				// 播放音效
				// MyPlayer.playTone(context, MyPlayer.INDEX_STONE_CANCEL);
			}
		});
		// 为dialog设置View
		// builder.setView(dialogView);
		mDialog.setContentView(dialogView);
		// mDialog = builder.create();
		mDialog.show();
	}
}

    AlertDialog:

/**
	 * 显示自定义对话框
	 * 
	 * @param context
	 * @param message
	 * @param listener
	 */
	public static void showDialog(final Context context, String message,
			final IAlertDialogButtonListener listener) {
		View dialogView = null;
		AlertDialog.Builder builder = new Builder(context,
				R.style.Theme_Transparent);
		dialogView = getView(context, R.layout.dialog_view);
		ImageButton btn_ok = (ImageButton) dialogView.findViewById(R.id.btn_ok);
		ImageButton btn_cancel = (ImageButton) dialogView
				.findViewById(R.id.btn_cancel);
		TextView txt_dailog_message = (TextView) dialogView
				.findViewById(R.id.txt_dailog_message);
		txt_dailog_message.setText(message);
		btn_ok.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// 关闭dialog
				if (mAlertDialog != null) {
					mAlertDialog.cancel();
				}
				// 事件回调
				if (listener != null) {
					listener.onClick();
				}

				// 播放音效
				MyPlayer.playTone(context, MyPlayer.INDEX_STONE_ENTER);
			}
		});
		btn_cancel.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// 关闭dialog
				if (mAlertDialog != null) {
					mAlertDialog.cancel();
				}
				// 播放音效
				MyPlayer.playTone(context, MyPlayer.INDEX_STONE_CANCEL);
			}
		});
		// 为dialog设置View
		builder.setView(dialogView);
		mAlertDialog = builder.create();
		mAlertDialog.show();
	}

    af_dialog_background圆角:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <solid android:color="#3C4856" />

    <corners
       android:bottomLeftRadius="0.1dp"
       android:bottomRightRadius="0.1dp"
        android:topLeftRadius="10dp"
        android:topRightRadius="10dp" />

</shape>

    dialog_view:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:paddingLeft="10dp"
    android:paddingRight="10dp" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/af_dialog_background"
        android:orientation="vertical" >

        <TextView
            style="@style/TextViewStyle_aboutus"
            android:layout_gravity="left"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="5dp"
            android:text="@string/af_logo_10_dialog_title"
            android:textColor="@color/white4"
            android:textSize="14sp" />

        <ScrollView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="10dp"
            android:background="@drawable/af_dialog_background"
            android:fillViewport="true"
            android:scrollbars="none" >

            <TextView
                android:id="@+id/txt_dailog_message"
                style="@style/TextViewStyle_aboutus"
                android:lineSpacingMultiplier="1.2"
                android:text="@string/af_logo_10_dialog_content"
                android:textColor="@color/white4"
                android:textSize="14sp" />
        </ScrollView>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/white"
        android:gravity="center_horizontal"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_cancel"
            style="?android:attr/buttonBarButtonStyle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="25dp"
            android:layout_marginRight="15dp"
            android:layout_marginTop="5dp"
            android:layout_weight="1"
            android:background="@drawable/btn_cancelclick"
            android:contentDescription="@string/action_settings"
            android:paddingBottom="8dp"
            android:paddingTop="8dp"
            android:text="@string/af_cancel"
            android:textColor="@color/white"
            android:textSize="16sp" />

        <Button
            android:id="@+id/btn_ok"
            style="?android:attr/buttonBarButtonStyle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="25dp"
            android:layout_marginTop="5dp"
            android:layout_weight="1"
            android:background="@drawable/btn_able"
            android:contentDescription="@string/action_settings"
            android:paddingBottom="8dp"
            android:paddingTop="8dp"
            android:text="@string/af_confirm"
            android:textColor="@color/white"
            android:textSize="16sp" />
    </LinearLayout>

</LinearLayout>

    最后是style:

<style name="Theme_Transparent" 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">@android:color/transparent</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:backgroundDimEnabled">true</item>
        <item name="android:backgroundDimAmount">0.6</item>
    </style>

    谢谢hongyang大神~~开心挣钱每一天

本文出自 “梁肖技术中心” 博客,请务必保留此出处http://liangxiao.blog.51cto.com/3626612/1613291

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。