一个小项目,需要用到一个自定义的Dialog,Dialog中需要一个ImageView用于显示表情图片,一个TextView用来显示提示文本,点击任何地方关闭Dialog,同时关闭打开这个Dialog的Activity。
效果如下图:

实现过程如下:
一、定义一个布局文件(dialog_custom.xml)
代码如下:
———————————————————————————————

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/layout_dialog"android:layout_width="330dip"android:layout_height="150dip"android:background="@drawable/shape_conner_white_bg"    android:orientation="horizontal"><ImageView android:id="@+id/im_toast_icon"android:layout_width="100dip"        android:layout_height="100dip"        android:background="@null" />     <TextView        android:id="@+id/tv_toast_content"        android:layout_width="180dip"        android:layout_height="wrap_content"        android:layout_marginTop="20dip"        android:text=""        android:textColor="#2f97e9"        android:textSize="18sp" android:singleLine="false"android:gravity="center_vertical"/></LinearLayout>

———————————————————————————————

内容很简单,就一个LinearLayout布局,里面有一个ImageView,一个TextView。
LinearLayout为了实现圆角矩形的效果,用了个shape背景。代码如下(shape_conner_white_bg.xml):
———————————————————————————————

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >     <corners android:radius="4dp" />      <solid       android:color="@android:color/white"       /></shape>

———————————————————————————————
二、自定义DialogUtils类,代码如下:
———————————————————————————————


import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.graphics.drawable.Drawable;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;public class DialogUtils
{    private static TextView tipTextView;    private static Dialog MyDialog;private static ImageView image_Icon;private static LinearLayout layout_dialog;//Dialog有三个参数,Contex不用多说,msg是提示文本,icon_draw是需要显示的图标。
public static void showCompleteDialog(final Context context,String msg,Drawable  icon_draw){        LayoutInflater inflater = LayoutInflater.from(context);        View v = inflater.inflate(R.layout.dialog_custom, null);// 得到加载viewtipTextView = (TextView) v.findViewById(R.id.tv_toast_content);// 提示文字 image_Icon=(ImageView)v.findViewById(R.id.im_toast_icon);//提示图标tipTextView.setText(msg);// 设置加载信息  image_Icon.setImageDrawable(icon_draw);layout_dialog=(LinearLayout) v.findViewById(R.id.layout_dialog);layout_dialog.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v){MyDialog.dismiss();}});MyDialog = new Dialog(context, R.style.MyDialogStyle);// 创建自定义样式dialogMyDialog.setCancelable(true); // 按“返回键”可以关闭Dialog       MyDialog.setCanceledOnTouchOutside(true); // 点击加载框以外的区域可以关闭Dialog  //定义MyDialog关闭时同时关闭ActivityMyDialog.setOnDismissListener(new OnDismissListener() {@Overridepublic void onDismiss(DialogInterface dialog) {//MyDialog.getOwnerActivity().finish();Activity act=(Activity)context;act.finish();MyDialog.dismiss();}});MyDialog.setContentView(v, new LinearLayout.LayoutParams(                LinearLayout.LayoutParams.MATCH_PARENT,                LinearLayout.LayoutParams.MATCH_PARENT));// 设置布局        /**         *将显示Dialog的方法封装在这里面         */        Window window = MyDialog.getWindow();        WindowManager.LayoutParams lp = window.getAttributes();        lp.width = 900;        lp.height = 360;        lp.y=-150;        window.setGravity(Gravity.CENTER_HORIZONTAL);        window.setAttributes(lp);        MyDialog.show();    }}   

其中MyDialogStyle是在res/values/style中定义的:

<style name="MyDialogStyle">        <item name="android:windowBackground">@android:color/transparent</item>        <item name="android:windowFrame">@null</item>        <item name="android:windowNoTitle">true</item>       <item name="android:windowIsFloating">true</item>        <item name="android:windowIsTranslucent">true</item>        <item name="android:windowContentOverlay">@null</item>        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 

———————————————————————————————
这样就OK了,在需要打开Dialog的地方添加以下代码就行了:
DialogUtils.showCompleteDialog(getContext(),"不好意思,你输给了手机AI!",getResources().getDrawable(R.drawable.lost));

转载于:https://blog.51cto.com/6273125/2374975

Android自定义Dialog及与Activity的交互相关推荐

  1. android如何自定义dialog,Android—自定义Dialog

    在 Android 日常的开发中,Dialog 使用是比较广泛的.无论是提示一个提示语,还是确认信息,还是有一定交互的(弹出验证码,输入账号密码登录等等)对话框. 而我们去看一下原生的对话框,虽然随着 ...

  2. android 自定义dialog样式,Android 自定义dialog类

    首先定制style样式 styles.xml 加入自定义样式 @null true true true @color/transparent @color/transparent true 0.6 在 ...

  3. android dialog 消失动画,android 自定义dialog弹出和消失缩放动画

    本文转自:android 自定义dialog,窗口动画 Java代码: package com.sunxu.org.IndividualityDialog; import Android.app.Ac ...

  4. Android自定义拍照上传界面,Android自定义dialog——设置头像(拍照,相册)

    Android自定义dialog--设置头像(拍照,相册) 需求场景:个人信息设置,点击头像,在界面上弹出一个弹框,用户选择"拍照"/"从图库选择",选择照片后 ...

  5. Android弹出自定义Dialog,android自定义Dialog实现底部弹窗

    android自定义Dialog实现底部弹窗 拿到这个需求,很多人都是直接想用popWindow 实现,但是这样的效果我们完全可以根据系统的Dialog 自定义一个. AlertDialog.Buil ...

  6. android 自定义透明 等待 dialog,Android自定义Dialog内部透明、外部遮罩效果

    Android自定义Dialog内部透明.外部遮罩效果 发布时间:2020-09-09 03:01:41 来源:脚本之家 阅读:117 作者:zst1303939801 本文实例为大家分享了Andro ...

  7. android自定义dialog对话框,android的自定义dialog对话框实现

    Android自定义dialog对话框 一:自定义dialog 如何填充布局 ①自定MyDialog类,在类里关联布局 public class MyDialog extends AlertDialo ...

  8. android自定义dialog不显示,有关问题解决之Android自定义Dialog无法dismiss

    问题解决之Android自定义Dialog无法dismiss 场景: 点击ListView的一个Item,弹出自定义Dialog.在初始化Dialog时,将一个OnClickListener作为参数传 ...

  9. android dialog 自定义布局,Android自定义Dialog实现加载对话框效果

    前言 最近开发中用到许多对话框,之前都是在外面的代码中创建AlertDialog并设置自定义布局实现常见的对话框,诸如更新提示等含有取消和删除两个按钮的对话框我们可以通过代码创建一个AlertDial ...

最新文章

  1. scrapy (2)下载图片及存储信息
  2. python写电商网站框架,python-django框架-电商项目-商品模块开发_20191124
  3. 收藏 | Windows 版 IntelliJ IDEA 快捷键终极大全!
  4. RxJava 和 RxAndroid 三(生命周期控制和内存优化)
  5. 【控制】《自动控制原理》胡寿松老师-第7章-线性离散系统的分析与校正
  6. kmeans改进 matlab,基于距离函数的改进k―means 算法
  7. java.util.Properties
  8. 常见的虚拟机需要配置的服务
  9. matlab sort descend,详解Matlab中 sort 函数用法
  10. linux开发板 pc 通讯_从51单片机到Linux 开发板运行hello world(教程4)
  11. 板式橡胶支座弹性模量怎样计算_Midas Civil支座模拟的详细解决方法
  12. Nginx学习总结(4)——负载均衡session会话保持方法
  13. 用MaskNetwork代币MASK首轮公开销售已结束,今晚23:00将进行第二轮售卖
  14. 一键批量打印EXCEL、WORD文档
  15. List集合排序Collections.sort()方法的一个容易忽略的小问题
  16. 给你一个小时,怎样有序撬启Web测试?
  17. win10系统老显卡(AMD Radeon HD 8500M)驱动错误
  18. height百分比%-px的实现(增加两个嵌套标签)~
  19. Embedded Linux S3C2440 - QEMU and Graphic
  20. Request Response

热门文章

  1. C#设置标记方法等为否决的不可用
  2. angularjs 中 Factory,Service,Provider 之间的区别
  3. asp.net MVC3 弹出窗口里嵌一个View代码
  4. linux读取环境变量替换,linux Shell脚本学习笔记二(变量和环境变量)
  5. 写毕业论文的最容易踩的几个坑
  6. 计算机视觉与深度学习 | ORB特征匹配:基于OpenCV+Python(暴力匹配、FLANN)
  7. 北斗导航 | 基于MATLAB的卫星轨道模拟
  8. Matlab | Matlab从入门到放弃(5)——矩阵与format
  9. SQLite学习手册(索引和数据分析/清理)
  10. SQLite学习手册(内置函数)