当前位置: 首页 > news >正文

android 简单快速 自定义dialog(简单好用,不需要设置样式)

1.MyDialog代码:

public class MyDialog{private Activity activity;private ViewGroup contentView;private View view;public MyDialog(Activity activity) {this.activity=activity;contentView = activity.findViewById(android.R.id.content);view=LayoutInflater.from(activity).inflate(R.layout.dialog_layout,null);view.findViewById(R.id.tv_cancel).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dismiss();}});view.findViewById(R.id.tv_sure).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dismiss();}});}/*** 显示dialog(包含动画)*/public void show(){Animation animation= AnimationUtils.loadAnimation(activity,R.anim.dialog_in_anim);view.setAnimation(animation);contentView.addView(view);}/*** 移除dialog(包含动画)*/public void dismiss(){Animation animation= AnimationUtils.loadAnimation(activity,R.anim.dialog_out_anim);view.setAnimation(animation);contentView.removeView(view);}
}

2.res/anim 下新建 dialog_in_anim.xml 和 dialog_out_anim.xml

dialog_in_anim.xml 底部显示

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:duration="300"android:fromYDelta="100%p"android:toYDelta="0%p" />
</set>

dialog_out_anim.xml 底部隐藏

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:duration="300"android:fromYDelta="0%p"android:toYDelta="100%p" />
</set>

3.界面布局:dialog_layout.xml ,半透明颜色值:#80000000

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#80000000"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:background="@android:color/white"android:orientation="vertical"android:paddingStart="40dp"android:paddingTop="20dp"android:paddingEnd="40dp"android:paddingBottom="20dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:layout_marginBottom="30dp"android:text="标题"android:textColor="@android:color/black"android:textSize="24sp"android:textStyle="bold" /><LinearLayoutandroid:layout_width="120dp"android:layout_height="200dp"android:layout_gravity="center"android:layout_marginBottom="20dp"/><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_marginStart="30dp"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_cancel"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:background="@android:color/darker_gray"android:gravity="center"android:paddingStart="60dp"android:paddingTop="15dp"android:paddingEnd="60dp"android:paddingBottom="15dp"android:text="关闭"android:textColor="@android:color/white"android:textSize="18sp" /><TextViewandroid:id="@+id/tv_sure"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@android:color/holo_orange_dark"android:gravity="center"android:paddingStart="60dp"android:paddingTop="15dp"android:paddingEnd="60dp"android:paddingBottom="15dp"android:layout_marginStart="20dp"android:text="确定"android:textColor="@android:color/white"android:textSize="18sp" /></LinearLayout></LinearLayout>
</FrameLayout>

4.使用:

new MyDialog(activity).show();

相关文章:

  • 在idea中配置tomcat服务器,然后部署一个项日
  • 【力扣二刷思路】DAY3
  • SpringSecurity(SpringBoot2.X版本实现)
  • Java面试题总结16之分布式id生成方案
  • Android Kotlin知识汇总(一)编程语言
  • StarRocks面试题及答案整理,最新面试题
  • 利用适配器模式使用第三方库
  • mybatis源码阅读系列(二)
  • 【SpringCloud微服务实战08】RabbitMQ 消息队列
  • Lua中文语言编程源码-第五节,更改lcorolib.c协程库函数, 使Lua加载中文库关键词(与所有的基础库相关)
  • 突破编程_C++_C++11新特性(nullptr、constexpr与基于范围的 for 循环)
  • 数字孪生与智慧城市:实现城市治理现代化的新路径
  • ES6(二):解构赋值、Symbol、Map和Set、数组的扩展方法
  • 【漏洞复现】大华智慧园区综合管理平台deleteftp命令执行漏洞
  • 从零开始的LeetCode刷题日记:替换数字
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • echarts花样作死的坑
  • js ES6 求数组的交集,并集,还有差集
  • js学习笔记
  • js正则,这点儿就够用了
  • magento 货币换算
  • nginx 负载服务器优化
  • opencv python Meanshift 和 Camshift
  • Python 反序列化安全问题(二)
  • Redis字符串类型内部编码剖析
  • unity如何实现一个固定宽度的orthagraphic相机
  • 京东美团研发面经
  • 一个项目push到多个远程Git仓库
  • 赢得Docker挑战最佳实践
  • 在Mac OS X上安装 Ruby运行环境
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​configparser --- 配置文件解析器​
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #pragma pack(1)
  • #Ubuntu(修改root信息)
  • (libusb) usb口自动刷新
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (接口自动化)Python3操作MySQL数据库
  • (力扣)循环队列的实现与详解(C语言)
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • .Net Core 中间件验签
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET 中让 Task 支持带超时的异步等待
  • .Net中ListT 泛型转成DataTable、DataSet
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [BIZ] - 1.金融交易系统特点
  • [BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)
  • [C#]winform部署PaddleOCRV3推理模型
  • [C/C++] -- 二叉树
  • [C]整形提升(转载)
  • [C++核心编程](四):类和对象——封装