android 自定义Dialog---1

首先在app\src\main\res\values\styles.xml中定义dialog的style样式

<style name="NoTitleDialog" parent="Theme.AppCompat.Light.Dialog">
        <!--没有标题-->
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <!--背景透明-->
        <item name="android:windowIsTranslucent">true</item>
        <!--是否有覆盖-->
        <item name="android:windowContentOverlay">@null</item>
        <!--是否浮动-->
        <item name="android:windowIsFloating">true</item>
        <!--边框-->
        <item name="android:windowFrame">@null</item>
        <!--背景:透明-->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!--dialog的整个屏幕的背景是否有遮障层-->
        <item name="android:backgroundDimEnabled">true</item>
        <!--是否全屏显示-->
        <item name="android:windowFullscreen">true</item>
        <!--动画-->
        <!--<item name="android:windowAnimationStyle">@style/AnimSlideBottom</item>-->
    </style>

第二部:编写自己想要的dialog的页面内容:

相关代码如下(dialog_bt_exit.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#00000000">

    <!--  android:layout_width="338dp"
        android:layout_height="280dp"-->
    <LinearLayout
        android:layout_width="338dp"
        android:layout_height="280dp"
        android:layout_centerInParent="true"
        android:background="@drawable/bg_bt_exit_dialog"
        android:gravity="center"
        android:orientation="vertical">

        <TextView
            android:id="@+id/tvShow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:lineSpacingExtra="6px"
            android:text="您的蓝牙已断开,是否重新\n连接蓝牙设备"
            android:textColor="@color/color_ffffff"
            android:textSize="20sp" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="45px"
            android:orientation="horizontal">

            <com.wdjr.bluetoothphone.view.CustomImageView
                android:id="@+id/btnOk"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:bg_normal_pic="@mipmap/btn_bt_connect_yes_n"
                app:bg_press_pic="@mipmap/btn_bt_connect_yes_p" />

            <com.wdjr.bluetoothphone.view.CustomImageView
                android:id="@+id/btnCancel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="26px"
                app:bg_normal_pic="@mipmap/btn_bt_connect_no_n"
                app:bg_press_pic="@mipmap/btn_bt_connect_no_p" />

        </LinearLayout>
    </LinearLayout>

</RelativeLayout>

bg_bt_exit_dialog.xml内容如下:

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

    <corners android:radius="10dp"></corners>
    <solid android:color="@android:color/black" />
    <stroke
        android:width="3dp"
        android:color="@android:color/white" />

</shape>

相关的java代码如下:

(BTExitDialog.java)

package com.lym.bluetoothphone.view;

import android.app.ActivityManager;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;

import com.wdjr.bluetoothphone.R;


/**
 * @content: 蓝牙退出提示
 * @author: liyanmei
 * @time: 2018/12/29
 * @email: lym_liyanmei@qq.com
 */
public class BTExitDialog extends Dialog {

    private static final String TAG = "BTExitDialog";

    private boolean cancelable = true;
    private View mParentView;
    private CustomImageView btnOk;
    private CustomImageView btnCancel;

    public BTExitDialog(@NonNull Context context, int themeResId) {
        super(context, themeResId);
    }

    public BTExitDialog(@NonNull Context context, int themeResId, boolean cancelable) {
        super(context, themeResId);
        this.cancelable = cancelable;

    }

    public BTExitDialog(@NonNull Context context) {
        super(context);
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate: ");
        initView();
    }

    private void initView() {
//        setContentView(R.layout.dialog_usb_ext);

        mParentView = getLayoutInflater().inflate(R.layout.dialog_bt_exit, null);

        setContentView(mParentView);
        setCancelable(cancelable);

        btnOk = mParentView.findViewById(R.id.btnOk);
        btnCancel = mParentView.findViewById(R.id.btnCancel);

        btnOk.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    dismiss();
                    Intent settintIntent = new Intent(android.provider.Settings.ACTION_BLUETOOTH_SETTINGS);
                    getContext().startActivity(settintIntent);
                }
                return false;
            }
        });

        btnCancel.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    dismiss();
                    com.wcy.coreliberay.utils.ActivityManager.getActivityManager().destroyAllActivity();
                }
                return false;
            }
        });

    }

    @Override
    public void dismiss() {
        super.dismiss();
    }

}

相关的调用如下:

 exitDialog = new BTExitDialog(this, R.style.NoTitleDialog, false);


// 显示弹窗
 if (exitDialog != null && !exitDialog.isShowing()) {
                            exitDialog.show();
                        }
// 关闭弹窗
if (exitDialog != null && exitDialog.isShowing()) {
                            exitDialog.dismiss();
                        }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值