【史上最简单】android 自定义dialog中的接口回调

Android开发:自定义界面的Dialog,并且实现按钮的监听回调 该项目适合想实现自定义dialog,有懒得折腾的人。 在安卓开发的时候,往往会碰到一些特别漂亮的dialog,比如这个图片的: 很多这种类型的dialog,界面千变万化,于是我建立了一个通用自定义dialog,可以实现以下功能: 1、界面的自定义,全部自己用xml定义界面; 2、不管是在Fragment,还是Activity都可以实例化该dialog,并且实现dialog按 阅读详情

实现效果点击性别item,弹出对话框,选择男、女,返回值给item中的textview


1、自定义dialog布局


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >


    <LinearLayout
        android:id="@+id/ll_man"
        android:layout_width="fill_parent"
        android:layout_height="@dimen/one_line_height"
        android:background="@drawable/lv_main_bg"
        android:clickable="true"
        android:gravity="center_vertical" >


        <TextView
            android:id="@+id/tv_man"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/more_margin_left"
            android:text="男"
            android:textColor="@color/black"
            android:textSize="@dimen/textSize_normal" />


        <View
            android:layout_width="fill_parent"
            android:layout_height="0.0dip"
            android:layout_weight="1.0" />


        <ImageView
            android:id="@id/iv_right"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="center"
            android:src="@drawable/arrow_right" />
    </LinearLayout>


    <View
        android:layout_width="fill_parent"
        android:layout_height="0.5dip"
        android:background="@color/divider_color" />


    <LinearLayout
        android:id="@+id/ll_woman"
        android:layout_width="fill_parent"
        android:layout_height="@dimen/one_line_height"
        android:background="@drawable/lv_main_bg"
        android:clickable="true"
        android:gravity="center_vertical" >


        <TextView
            android:id="@+id/tv_woman"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/more_margin_left"
            android:text="女"
            android:textColor="@color/black"
            android:textSize="@dimen/textSize_normal" />


        <View
            android:layout_width="fill_parent"
            android:layout_height="0.0dip"
            android:layout_weight="1.0" />


        <ImageView
            android:id="@id/iv_right"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="center"
            android:src="@drawable/arrow_right" />
    </LinearLayout>


</LinearLayout>


2、重写dialog

package util;


import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;


import com.zjrc.yygh.v1.R;


public class MySexDialog extends Dialog {
Context mContext;
private OnCustomDialogListener customDialogListener;


// 定义回调事件,用于dialog的点击事件
public interface OnCustomDialogListener {
public void back(String sex);
}


public MySexDialog(Context context,
OnCustomDialogListener customDialogListener) {//创建Dialog对象时候传入OnCustomDialogListener 参数
super(context);
mContext = context;
this.customDialogListener = customDialogListener;
}


@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// 加载布局文件
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.dialog_item, null);
TextView textView1 = (TextView) view.findViewById(R.id.tv_man);
final String man = textView1.getText().toString();
TextView textView2 = (TextView) view.findViewById(R.id.tv_woman);
final String woman = textView2.getText().toString();


LinearLayout layout1 = (LinearLayout) view.findViewById(R.id.ll_man);
layout1.setOnClickListener(new View.OnClickListener() {


@Override
public void onClick(View v) {
// 回调
customDialogListener.back(man);//调用的是重写的back()
MySexDialog.this.dismiss();


}
});
LinearLayout layout2 = (LinearLayout) view.findViewById(R.id.ll_woman);
layout2.setOnClickListener(new View.OnClickListener() {


@Override
public void onClick(View v) {
// 回调
customDialogListener.back(woman);
MySexDialog.this.dismiss();
}
});
// dialog添加视图
setContentView(view);
}


}


3.在Activity点击的时候获取选择的性别

  MySexDialog dialog = new MySexDialog(this, new MySexDialog.OnCustomDialogListener() {


                    @Override
                    public void back(String sex) {
                        tv_sex.setText(sex);//对返回的sex进行操作
                    }
                });
                dialog.show();

Android自定义Dialog动画效果大全 本文还有配套的精品资源,点击获取 简介:本文件详细介绍了在Android开发中如何通过自定义Dialog来改善用户交互和界面美观度。"自定义Dialog.zip"提供了一个包含七种动画效果的示例,涵盖了基本结构、自定义动画、布局定制和交互逻辑等方面。开发者可以学习如何创建富有创意的弹出窗口,并利用动画效果提升用户体验。 1. Android Dialog基本结构 ... 阅读详情

相关推荐

Android 通过自定义Dialog来理解接口回调callback

通过简单的自定义Dialog来理解接口回调callback机制

自定义Dialog接口回调参数

基本上所有的app项目都会有自定义dialog,但有时如果把dialog单独写成一个类,我们就需要考虑到如何将dialog的参数回调到activity或者fragment,当然有很多方法,这里主要讲的是通过接口回调的方式来把dialog中的参数传递到activity或者fragment,主要讲述的是一个接口回调的思想,这种思想同样可以应用到项目中的其他地方,其次这里也阐述了如何将一个字符串中的某部

林枕祥的博客 4065

Android自定义dialog(回调传值)demo

详细描述了自定义对话框的步骤,适合新手: 1.创建一个继承Dialog的类 2.重写必要构造方法和其他方法 3.绘制对话框布局 4.对话框中的业务逻辑处理 5.实现对话样式的设置和定义 6.对话框在页面的展示

Android Dialog

android dialog

to_cm的专栏 2694

浙政钉H5应用上架实战:从环境配置到发布避坑指南

本文详细解析浙政钉H5应用上架全流程,从环境配置到发布避坑指南。重点介绍Vue 2.6 + Node 14.21.3的稳定开发环境搭建、项目结构规范及常见报错解决方案,帮助开发者高效完成浙政钉H5应用上架流程。

weixin_27943395的博客 286

PyTorch实战:手把手教你用QAT量化感知训练拯救模型精度(附避坑指南)

本文详细介绍了如何使用PyTorch进行QAT量化感知训练,以提升模型在边缘设备上的推理精度。通过核心原理讲解、实战代码示例和避坑指南,帮助开发者掌握从环境配置、模型训练到边缘部署的全流程,有效解决传统量化方法导致的精度损失问题。

c7d8e的博客 329

android 回调接口学习(自定义Dialog 获取数据数据回调)

功能:将单独的一个Dialog提取出来以复用代码,然后在activity中去new 一个Dialog出来,能够获取Dialog选取的数据;具体实现TopicSingleChoiceDialog.java private int topicID=-1;//真正要获取的数据自定义内部类接口 public interface OnTestListening{ void getTopicI

Lola&France 3526

【WiFi软件开发】IOCTL和Netlink----用户空间和内核空间交互的两种方式

linux开发中通常会涉及用户空间和内核模块的交互。本文介绍了两种典型的用户空间和内核模块通信方式:ioctl和netlink

liuwe1ye的博客 2348

学习笔记——Dialog回调

刚才看到我的上一篇文章都是三个月前的了,这次也懒得找借口了(这是有多懒)。过了这么久,当然还是存了不少干货了,刚好最近想整理下这段时间的内容。上一篇文章是关于Dialog的,那么这篇文章就从它入手吧。接着往下写,很多时候,我们的Dialog所运用的场景和可能不是当前页面。 还是先上图: 就像这样的场景,一个发布页面,当用户将内容填写完毕后,发布,我们需要弹窗提示用户再仔细审查一遍,或者当时用户

Wuli_taotao的博客 2065

【深度学习】肺结节分割项目实战二:分割肺实质

在后续训练模型的时候如果直接使用原始的肺部CT图像,其中的非肺区域会对训练造成干扰,因此我们需要提取分割肺实质。这一部分参考了kaggle上的教程。 从这张CT图像中可以看出扫描器以外的部分为黑色,背景和肺内部颜色较深,非肺组织和骨头颜色较浅。我们的目的是将肺部分割出来。由于肺部区域和其他部分对比明显,我们可以设置一个合适的阈值对图像中的区域进行隔离。 import argparse import os import numpy as np from medpy.filter.smoothing imp

weixin_42182906的博客 7240

如何离线环境下安装Dify插件 (可提供远程指导协助)

离线环境下安装Dify插件

litlit023的专栏 8100

回调传值 自定义Dialog中控件回调 自定义控件回调

曾经项目中用到的回调: 这是一个类中的方法:只需要传入一个AppMonitorListener接口的实现类对象即可; 另一个A类(调回调), 另一个B类(调回调), 重点看下图片中写的注释!! 规定客户端拿到服务端发出的数据后做的方法,具体实现还要靠客户端去实现; 服务端类(把值传出去的那个类,最终客户端调...

emmmsuperdan的博客 912

【AI大模型:架构实战】31、工业级AI大模型系统全景解析:从架构设计到提示语引擎实践

本文系统解析了工业级AI大模型的核心架构与技术体系。整体采用分层解耦设计,包含数据工程、模型训练、模型部署、应用集成和监控运维五大核心模块,以及分布式计算、高速网络、异构硬件三大支撑体系。数据工程构建高质量数据处理流水线;模型训练实现从预训练到业务适配的全流程;模型部署优化服务性能与可用性;应用集成连接业务场景;监控运维保障系统持续优化。三大支撑能力专注于千亿参数管理、高并发低延迟处理和持续学习进化。该架构设计既满足当前需求,又为技术演进预留空间,为企业在数字化转型中提供AI工业化落地的完整解决方案。

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 1989

Android中的接口回调机制

1.回调的含义和用途 一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类同步调用、异步调用和回调。同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的函数名来调用之,使内存中对应函数B的代码得以执行。异步调用是一种类似消息或事件的机制解决了同步阻塞的问题,例如A通知B后,他们各走各的路,互不影响,不用像同步调用那样,A通知B后,非得等到B走完后,A才继续走。回调是一种双向的调用模式,也就是说,被调用的接口被调用时也会调用对方的接口,例如A要调用B,B在执行完又要调用A。 回调的思

ChenYiRan123456的博客 2358

桌面运维工程师面试题详解(一)

桌面运维工程师面试题详解(一)

jks212454的博客 1425

【DeepSeek应用实践】手把手教程:用 AnythingLLM + Ollama + DeepSeek-R1 搭建本地企业知识库

在众多的技术方案中,我们选择了 AnythingLLM、Ollama 和 DeepSeek-R1 这一组合来搭建本地知识库。Ollama 作为一个轻量级的本地化大语言模型部署工具,支持多种模型,易于安装和使用,能够快速在本地运行强大的语言模型。DeepSeek-R1 是一个专为知识库问答设计的检索增强生成(RAG)模型,它结合了检索和生成的优势,能够快速从知识库中检索相关信息并生成精准答案。而 AnythingLLM 则是一个用户友好的界面工具,可以方便地连接 Ollama 和 DeepSeek-R1

寻道AI,探索AI无限可能! 2567

利用Android回调机制对Dialog进行简单封装

写作原因:Android回调机制是Android开发者绕不开的一个点,对于它的掌握学习十分重要。本文由于作者水平有限可能存在纰漏,对于回调机制的学习掌握仍在途中,以后会推出更多的相关文章。简介接口回调是Android中一种常用的机制,如Button点击事件就是接口回调的具体实现。Fragment与Activity之间的通信机制也是基于接口回调实现,感兴趣的可以阅读博主上篇关于Fragment通信的文

RoadToGeek技术小栈 1117

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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

在 Android 日常的开发中,Dialog 使用是比较广泛的。无论是提示一个提示语,还是确认信息,还是有一定交互的(弹出验证码,输入账号密码登录等等)对话框。而我们去看一下原生的对话框,虽然随着 Android 版本的更新,变得比较好看了,但是,一个 App 往往都会有自己的风格,都会定义一个或几个和 App 整体风格保持一致的 Dialog,这样显得好看一点。也比较令人赏心悦目,下面就来看看...

weixin_36260323的博客 1142

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

安卓开发之简单的接口回调

安卓开发中的接口回调什么是接口回调TestDialog.javaMainActivity.java相关文件总结 什么是接口回调 简单来讲,接口回调就是当一个状态变化时,这段程序的的走向,比如:点击按钮时,弹出弹框,音乐暂停时,紧接着弹出一段广告,闲话不多说,上代码 TestDialog.java 在这个类中,有写好的回调以及相关的操作,但这个类充其量只能算是影碟机中的光盘,没有影碟机是不会工作的 ...

技术大白的博客 981

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Android 中的接口回调

在Android中到处可见接口回调机制,尤其是UI事件处理方面。举一个最常见的例子button点击事件,button有一个点击方法onClick(),我们知道onclick()是一个回调方法,当用户点击button就执行这个方法。在源码中是这样定义的: [html] view plaincopy //这个是View的一个回调接口   /**   * 

liwei405499的专栏 712

自定义Dialog 通过回调函数CallBack接口实现自定义风格

自定义Dialog 通过回调函数CallBack接口实现自定义风格 package com.vtion.sleb.view; import com.vtion.sleb.activities.R; import android.app.Dialog; import android.content.Context; import android.content.DialogInte

军军同学的专栏 2834

安卓开发如何自定义Dialog

安卓开发之自定义Dialog        我没怎么学安卓开发,因为工作上的项目需要,边学边做;在做项目的过程中真切的体会到了接口回调在安卓开发中使用的频率与场景非常之多。(个人感觉使用接口回调主要是突破安卓变量的作用域范围的限制一种解决方案。安卓开发中也使用到了很多设计模式。)        差点离题了,下面将详细解释自定义Dialog的使用。 自定义Dialog        自定义D

世俗的眼光 554

android回调是怎么实现的? --以自定义Dialog为例

基本的回调是如何实现的: 1、首先创建一个接口,这个接口用于你在某个情景下执行相应的操作方法。 2、创建一个功能类,比如这个类可以显示一个对话框、可以滑动菜 单、可以下载数据等等。 3、在这个类里面声明回调接口的对象 4、在这个类里面创建在某个情景下需要执行的方法,而且在这个方法里面为声明的接口对象赋 值。 5、在其他的类中使用这个功能类。

张武不是技术宅的博客 693

android activity传值到dialog,自定义Dialog(二)之Dialog与Activity传值

之前发的那篇自定义Dialog似乎有点太含糊,Dialog的关系图甚至都没写,以及Dialog显示的时候Activity的生命周期是处于什么状态,Dialog如何向Activity传递值1,Dialog的关系图 2,Dialog显示的时候Activity处于什么状态 ? Dialog显示的时候不会调用Activity的任何生命周期方法,上代码:public class MainActivity e...

weixin_31860973的博客 1404
上一篇: 【史上最简单】android生命周期之home键、返回键、finish()
下一篇: 【史上最简单】android硬件加速——关于图片过大无法显示,直接变黑色问题
是辉仔啊
博客等级 码龄12年 13粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值