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

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() {
            @Override
            public void onClick(View v) {
                dismiss();
            }
        });
        view.findViewById(R.id.tv_sure).setOnClickListener(new View.OnClickListener() {
            @Override
            public 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">
    <translate
        android: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">
    <translate
        android: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">

    <LinearLayout
        android: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">

        <TextView
            android: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" />
        
        <LinearLayout
            android:layout_width="120dp"
            android:layout_height="200dp"
            android:layout_gravity="center"
            android:layout_marginBottom="20dp"
            />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginStart="30dp"
            android:orientation="horizontal">

            <TextView
                android: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" />

            <TextView
                android: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();


http://www.kler.cn/a/273007.html

相关文章:

  • Spring 核心技术解析【纯干货版】- VIII:Spring 数据访问模块 Spring-Tx 模块精讲
  • Android BitmapShader更简易的实现刮刮乐功能,Kotlin
  • STM32-笔记40-BKP(备份寄存器)
  • 如何发布自己的第一个Chrome扩展程序
  • 使用 Vite 创建 Vue 3 项目:从零开始的详细指南
  • C#类型转换
  • 滑块验证码
  • 算法之前缀和
  • TypeScript中的 K、T 、V
  • MiniGPT-5: 通过生成性视觉标记实现交错式视觉与语言生成
  • 使用wx:for()
  • redis配置文件详情
  • 全基因集GSEA富集分析
  • 基于Andriod的连锁药店管理系统(源码|论文)
  • npm WARN config init.license Use `--init-license` instead.
  • Python爬虫从基础到入门:script标签中的数据
  • Mosquitto MQTT服务器和客户端简单命令
  • 【前缀和】100255. 成为 K 特殊字符串需要删除的最少字符数
  • BUGKU-WEB cookies
  • week07day03(power bi dax公式 零售数据业务分析)
  • QT中messageBox的使用
  • web蓝桥杯真题:时间管理大师
  • 牛客——紫魔法师(并查集)
  • 探索大数据时代的决策利器:如何有效应对海量数据?
  • 什么是web workers?使用场景?
  • 【电路笔记】-MOSFET作为开关