工具篇——RoundCornerDialog(圆角的dialog)

写代码的四点:
     1.明确需求。要做什么?
     2.分析思路。要怎么做?(1,2,3……)
     3.确定步骤。每一个思路要用到哪些语句、方法和对象。
     4.代码实现。用具体的语言代码将思路实现出来。

学习新技术的四点:
     1.该技术是什么?
     2.该技术有什么特点?(使用需注意的方面)
     3.该技术怎么使用?(写Demo)
     4.该技术什么时候用?(在Project中的使用场景 )

----------------------早计划,早准备,早完成。-------------------------

代码如下:

package com.wy.test.other;

import android.app.Dialog;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

/**
 * 圆角的dialog
 */
public class RoundCornerDialog extends Dialog {

    private static int default_width = 160; //默认宽度
    private static int default_height = 120;//默认高度

    public RoundCornerDialog(Context context, View layout, int style) {
        this(context, default_width, default_height, layout, style);
    }

    public RoundCornerDialog(Context context, int width, int height, View layout, int style) {
        super(context, style);
        setContentView(layout);
        Window window = getWindow();
        WindowManager.LayoutParams params = window.getAttributes();
        params.gravity = Gravity.CENTER;
        window.setAttributes(params);
    }

    //圆角的dialog样式,在values——》styles中设置
//    <style name="RoundCornerDialog" 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>
}

在项目中的应用:

1.在values——》styles中设置style样式;

<!--圆角的dialog-->
<style name="RoundCornerDialog" 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>
2.在drawable中定义shape_circle_corner_white文件(圆角的背景)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <!-- 填充的颜色 -->
    <solid android:color="#ffffff" />
    <!-- 设置按钮的四个角为弧形 -->
    <!-- android:radius 弧形的半径 -->
    <corners android:radius="16dip" />

    <!-- padding:Button里面的文字与Button边界的间隔 -->
    <!--<padding
        android:left="10dp"
        android:top="10dp"
        android:right="10dp"
        android:bottom="10dp"/>-->
</shape>
3.定义弹出的RoundCornerDialog的layout布局文件;
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/shape_circle_corner_white"
    android:gravity="center"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="222dp"
        android:layout_height="132dp"
        android:background="@drawable/shape_circle_corner_white">

        <TextView
            android:id="@+id/tv_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="37dp"
            android:textColor="#666666"
            android:textSize="17dp" />

        <LinearLayout
            android:id="@+id/ll"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_alignParentBottom="true"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/tv_logout_confirm"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="确定"
                android:textColor="#e01b2b"
                android:textSize="17dp" />

            <TextView
                android:id="@+id/tv_logout_cancel"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="取消"
                android:textColor="#e01b2b"
                android:textSize="17dp" />

        </LinearLayout>

        <View
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:layout_alignTop="@id/ll"
            android:background="#e4e4e4" />

        <View
            android:layout_width="0.5dp"
            android:layout_height="50dp"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:background="#e4e4e4" />
    </RelativeLayout>
</LinearLayout>
4.在activity中展示圆角的dialog
/**
 * 展示圆角的dialog
 */
private void showDialog() {
    View view = View.inflate(this, R.layout.dialog_two_btn, null);
    final RoundCornerDialog roundCornerDialog = new RoundCornerDialog(this, 0, 0, view, R.style.RoundCornerDialog);
    roundCornerDialog.show();
    roundCornerDialog.setCanceledOnTouchOutside(false);// 设置点击屏幕Dialog不消失
    roundCornerDialog.setOnKeyListener(keylistener);//设置点击返回键Dialog不消失

    TextView tv_message = (TextView) view.findViewById(R.id.tv_message);
    TextView tv_logout_confirm = (TextView) view.findViewById(R.id.tv_logout_confirm);
    TextView tv_logout_cancel = (TextView) view.findViewById(R.id.tv_logout_cancel);
    tv_message.setText("这是个圆角的dialog");

    //确定
    tv_logout_confirm.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            roundCornerDialog.dismiss();
        }
    });
    //取消
    tv_logout_cancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            roundCornerDialog.dismiss();
        }
    });
}

DialogInterface.OnKeyListener keylistener = new DialogInterface.OnKeyListener() {
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
            return true;
        } else {
            return false;
        }
    }
};

猜你喜欢

转载自blog.csdn.net/qq941263013/article/details/80249853
今日推荐