【安卓开发 】Android初级开发(九)Android中封装View提供接口供点击事件回调的方法及使用

自古一楼先上图

 

package com.example.mydialog;import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;public class OKCancelTipsDialog extends Dialog {private Context context;private String titleValue, contentValue, okValue, cancelValue;private Button okBtn, cancelBtn;private TextView titleTv, contentTv;private DialogClickListenerInterface clickListenerInterface;public interface DialogClickListenerInterface {public void doOk();public void doCancel();}public OKCancelTipsDialog(Context context, String titleValue,String contentValue, String okValue, String cancelValue) {super(context);this.context = context;this.titleValue = titleValue;this.contentValue = contentValue;this.okValue = okValue;this.cancelValue = cancelValue;// this.confirmButtonText = confirmButtonText;// this.cacelButtonText = cacelButtonText;}@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);this.setCancelable(false);// 设置点击屏幕Dialog不消失init();}public void init() {LayoutInflater inflater = LayoutInflater.from(context);View view = inflater.inflate(R.layout.dialog_view_ok_cancel_tips, null);setContentView(view);okBtn = (Button) view.findViewById(R.id.ok_btn);cancelBtn = (Button) view.findViewById(R.id.cancel_btn);titleTv = (TextView) view.findViewById(R.id.title_tv);contentTv = (TextView) view.findViewById(R.id.content_tv);titleTv.setText(titleValue);contentTv.setText(contentValue);okBtn.setText(okValue);cancelBtn.setText(cancelValue);okBtn.setOnClickListener(new clickListener());cancelBtn.setOnClickListener(new clickListener());Window dialogWindow = getWindow();WindowManager.LayoutParams lp = dialogWindow.getAttributes();DisplayMetrics d = context.getResources().getDisplayMetrics(); // 获取屏幕宽、高用lp.width = (int) (d.widthPixels * 0.8); // 高度设置为屏幕的0.6dialogWindow.setAttributes(lp);}public void setClicklistener(DialogClickListenerInterface clickListenerInterface) {this.clickListenerInterface = clickListenerInterface;}private class clickListener implements View.OnClickListener {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubint id = v.getId();switch (id) {case R.id.ok_btn:clickListenerInterface.doOk();break;case R.id.cancel_btn:clickListenerInterface.doCancel();break;}}};}

MainActivity中调用

package com.example.mydialog;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.util.Log;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//-----------------------------------OKCancelTipsDialog logInOtherDivice = new OKCancelTipsDialog(MainActivity.this, "下线通知","你的账号已经在其它设备登陆,如非本人操作,请及时修改密码", "确定","Hello");logInOtherDivice.setClicklistener(new OKCancelTipsDialog.DialogClickListenerInterface() {@Overridepublic void doOk() {Log.d("OK","66666");}@Overridepublic void doCancel() {Log.d("OdoCancel","66666");}});logInOtherDivice.show();}}

自定义的对话框推荐设计

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="320dp"android:layout_height="wrap_content"android:background="@android:color/transparent"android:orientation="vertical"><ImageViewandroid:id="@+id/iv_bg"android:layout_width="match_parent"android:layout_height="140dp"android:background="@drawable/ic_dialog_default" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@drawable/bg_white_radius_6"android:orientation="vertical"><TextViewandroid:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="16dp"android:layout_marginRight="16dp"android:textColor="@android:color/black"android:textSize="15sp"tools:text="发现新版v2.0.1可以下载啦!" /><TextViewandroid:id="@+id/tv_size"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="16dp"android:layout_marginTop="8dp"android:layout_marginRight="16dp"android:textColor="#757575"android:textSize="14sp"android:visibility="gone"tools:text="新版本大小:5M" /><ScrollViewandroid:layout_width="match_parent"android:layout_height="90dp"android:layout_marginLeft="16dp"android:layout_marginTop="8dp"android:layout_marginRight="16dp"android:overScrollMode="never"><TextViewandroid:id="@+id/tv_description"android:layout_width="wrap_content"android:layout_height="wrap_content"android:lineSpacingMultiplier="1.1"android:textColor="#757575"android:textSize="14sp"tools:text="" /></ScrollView><!--        <com.azhon.appupdate.dialog.NumberProgressBar--><!--            android:id="@+id/np_bar"--><!--            android:layout_width="match_parent"--><!--            android:layout_height="wrap_content"--><!--            android:layout_marginLeft="16dp"--><!--            android:layout_marginTop="8dp"--><!--            android:layout_marginRight="16dp" />--><Buttonandroid:id="@+id/btn_update"android:layout_width="match_parent"android:layout_height="40dp"android:layout_marginLeft="16dp"android:layout_marginTop="8dp"android:layout_marginRight="16dp"android:layout_marginBottom="16dp"android:background="@drawable/bg_button"android:text="@string/update"android:textAllCaps="false"android:textColor="@android:color/white" /></LinearLayout><Viewandroid:id="@+id/line"android:layout_width="2dp"android:layout_height="30dp"android:layout_gravity="center"android:background="@android:color/white" /><ImageButtonandroid:id="@+id/ib_close"android:layout_width="30dp"android:layout_height="30dp"android:layout_gravity="center"android:background="@drawable/ic_dialog_close" />
</LinearLayout>

样式

<resources><!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item></style><!--对话框的样式--><style name="DialogActivity" parent="Theme.AppCompat.Dialog"><!--对话框背景 --><item name="android:windowBackground">@android:color/transparent</item><!--边框 --><item name="android:windowFrame">@null</item><!--没有标题 --><item name="android:windowNoTitle">false</item><!-- 是否浮现在Activity之上 --><item name="android:windowIsFloating">true</item><!--背景透明 --><item name="android:windowIsTranslucent">true</item><!-- 是否有覆盖 --><item name="android:windowContentOverlay">@null</item><!--背景变暗--><item name="android:backgroundDimEnabled">false</item></style><!--对话框的样式--><style name="UpdateDialog" parent="DialogActivity"><!--背景变暗--><item name="android:backgroundDimEnabled">true</item></style><!--    进度条样式--><declare-styleable name="NumberProgressBar"><attr name="progress_unreached_color" format="color" /><attr name="progress_reached_color" format="color" /><attr name="progress_text_size" format="dimension" /><attr name="progress_text_color" format="color" /></declare-styleable></resources>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打印pdf就一页_Excel表格打印技巧汇总,看完才发现,你连基础打印技巧都不知道...

前天被老板削了一顿&#xff0c;说我打印的表格连标题行都没有&#xff01;昨天被老板削了两顿&#xff0c;说我打印的表格太浪费纸&#xff01;今天被老板削了五顿&#xff0c;说我表格打印出来的数据居然是错误&#xff01;……在挨削了很多次之后&#xff0c;学会了一些技巧…

机器学习java_如何开始使用Java机器学习

机器学习java什么是开始使用Java机器学习的最佳工具&#xff1f; 他们已经存在了一段时间&#xff0c;但如今看来&#xff0c;每个人都在谈论人工智能和机器学习。 对于科学家和研究人员而言&#xff0c;它已经不再是秘密&#xff0c;几乎可以在任何新兴技术中实现。 在下面的…

nginx delete form表单 收不到参数_HTTP 文件上传的一个后端完善方案(NginX)

(给PHP开发者加星标&#xff0c;提升PHP技能)转自&#xff1a;林伯格https://breeze2.github.io/blog/scheme-nginx-php-js-upload-process前言很多网站都会有上传文件的功能&#xff0c;比如上传用户头像&#xff0c;上传个人简历等等&#xff0c;除非是网盘类的网站&#xff…

高通写号工具_高通推出桌面平台新ARM处理器并认为我们的电脑性能没必要那么高...

高通公司在日前举办的骁龙技术峰会上宣布推出骁龙7c / 8c处理器 , 这些处理器全部都是面向笔记本电脑推出的。这也是高通和微软合作推出 Windows 10 ARM 设备的组成部分 , 高通希望能够在桌面平台挑战英特尔统治地位。如果你有印象的话或许还记得高通此前推出的骁龙 8cx芯片组&…

混合高斯模型_高斯混合模型(GMM)

下图所示&#xff0c;显然用右边的图描述当前分布更加合理&#xff0c;即应用了两个高斯分布。图中每一个样本点同时属于任何一个高斯模型。高斯混合模型 从几何角度来理解&#xff0c;GMM是由多个高斯分布叠加而成&#xff0c;可以看做是多个高斯分布的加权平均。其中&#x…

来的多可选_您的框架有多可扩展性?

来的多可选在参加会议时&#xff0c;我们总是会遇到高素质的决策者&#xff0c;他们经常问同样的问题&#xff1a; 您的框架有多可扩展性&#xff1f;如果我需要的比您开箱即用的功能还多呢&#xff1f; 。 这个问题非常合理&#xff0c;因为他们只是不想被卡在开发曲线的中间&…

【H.264/AVC视频编解码技术】第六章【指数哥伦布编码】

H264中语法元素描述符 指数哥伦布 (Exponential-Golomb) 熵编码 指数哥伦布编码同哈夫曼编码一样,都是变长编码。 二者的显著区别: 信源相关性:哈夫曼编码依赖于信源的概率分布;指数哥伦布与信源无关。 额外信息:哈夫曼编码的数据必须额外携带与信源匹配的码表;指…

C++ 11 深度学习(七)位运算常见操作

1. 取出数中任意k位置的二进制位是0还是1 n >> k & 1 原理&#xff1a;先把想要取出的位置移动到个位&#xff0c;1的二进制是 0001 , 进行与操作就可以提取出最后一位是0还是1&#xff1b;二进制是从右向左&#xff0c;由低到高&#xff0c;从0到7。 2. 右移操作 …

聚合项目访问后台接口失败_聚合支付系统和免签支付系统对未来支付市场有哪些影响...

时势所趋&#xff0c;在如今支付通道不稳定的情况下&#xff0c;四方聚合支付的出现弥补了通道不稳的情况&#xff0c;四方聚合支付可以接入多个三方&#xff0c;实现在三方不稳的情况直接后台切换三方&#xff0c;实现一秒切换&#xff0c;还可以接入个人免签支付系统&#xf…

activemq消息持久化_ActiveMQ 5.x中的消息持久性

activemq消息持久化我被问了很多关于ActiveMQ如何存储消息&#xff08;或在某些情况下不存储&#xff09;的基本知识。 这是它的高级解释。 注意&#xff0c;上下文在JMS中。 如果您使用ActiveMQ的非JMS客户端&#xff08;即STOMP&#xff0c;AMQP&#xff0c;MQTT等&#xff0…

【安卓开发 】Android初级开发(十一)Android中多线程

线程的创建 1.创建一个Thread类&#xff0c;或者创建一个Thread子的对象&#xff1b; 2.创建一个Runnable接口的类对象; 传入Runnable对象创建线程 package com.sina.baode;import android.util.Log;/** 自定义一个继承于Runnable*/public class DemoThread implements Run…

td 内单选框不可用_在TD,我和曾经的老师变成了同事,也收获了最满意的“课外活动”...

早就想找个时间好好写一篇文章记录一下我在TD的学习工作经历了&#xff0c;同时表达一下我对TD深深的爱和感谢。一、结缘TD一年前&#xff0c;我第一次报了TD的AP环境科学寒假班。由于当时我在冲刺三月的SAT&#xff0c;整个寒假我一心扑在了SAT上&#xff0c;没来得及听TD的直…

activiti脚本任务_Activiti中的安全脚本如何工作

activiti脚本任务最近的Activiti 5.21.0版本的突出特点之一是“安全脚本”。 Activiti用户指南中详细介绍了启用和使用此功能的方法 。 在这篇文章中&#xff0c;我将向您展示我们如何实现其最终实现以及它在幕后所做的事情。 当然&#xff0c;因为这是我通常的签名风格&#x…

C++ 11 深度学习(八)重定义override

1.动态联编&#xff0c;本质是在运行时多态的表现。 2.其本质是因为维护了一张虚函数表&#xff0c;虚函数表以链表的形式存在。每个结点存储了对象指针的地址&#xff0c;通过一个指针进行遍历索引。 #include <iostream> #include <armadillo> using namespace …

逻辑回归模型_联邦学习体系下——逻辑回归模型

联邦学习的体系我们在前期介绍过&#xff0c;这里我们简单回顾一下纵向联邦学习的定义&#xff1a;在两个数据集的用户重叠较多而用户特征重叠较少的情况下&#xff0c;将数据集按照纵向 (即特征维度)切分&#xff0c;并取出双方用户相同而用户特征不完全相同的那部分数据进行训…

C++ 11 深度学习(九)C++文件IO

1.将数据写入文件 #include <iostream> #include <fstream> using namespace std;int main() {ofstream p1;p1.open("outfile.txt");p1 << "向文件写入信息" << endl;p1.close();return 0; } 2.将数据从文件中读出 #inclu…

plsql例外_大例外背后的真相

plsql例外异常可能是最被滥用的Java语言功能。 这就是为什么 让我们打破一些神话。 没有牙仙子。 圣诞老人不是真实的。 TODO评论。 finalfinalversion-final.pdf。 无皂肥皂。 而且…例外实际上是例外。 后者可能需要更多说服力&#xff0c;但是我们可以帮助您。 在这篇文章…

滴滴java开发面试题_Java开发经典面试题(十二)

好久没有来更新我的面试题了&#xff0c;不知道关注我的小伙伴有没有失联啊&#xff1f;&#xff01;呼叫&#xff01;好了开始我们今天的正题分享&#xff01;1、如何从FutureTask不阻塞获取结果get(long timeout,TimeUnit unit)&#xff0c;超时则返回轮询&#xff0c;先通过…

hashmap大小_调整HashMap的大小:未来的危险

hashmap大小最近&#xff0c;我偶然发现了一个错误&#xff0c;该错误是由于多个线程对java.util.HashMap的使用不当引起的。 该错误是泄漏抽象的一个很好的例子。 只有了解数据结构的实现级别详细信息&#xff0c;才能帮助我解决当前的问题。 因此&#xff0c;我希望与他人分享…

apache spark_Apache Spark软件包,从XML到JSON

apache sparkApache Spark社区为扩展Spark付出了很多努力。 最近&#xff0c;我们希望将XML数据集转换为更易于查询的内容。 我们主要对每天进行的数十亿笔交易之上的数据探索感兴趣。 XML是一种众所周知的格式&#xff0c;但是有时使用起来可能很复杂。 例如&#xff0c;在Apa…