Android开发中onClick事件的几种实现,分析,对比

5分钟搞定:用Pyannote和Whisper实现带说话人分离的语音转文字(附完整代码) 本文详细介绍了如何快速构建一个集成了说话人分离功能的语音转文字系统。通过结合OpenAI的Whisper模型进行高精度语音识别和Pyannote模型实现说话人分离,并提供了完整的代码实现、环境搭建指南以及核心的对齐与合并逻辑,帮助开发者高效处理会议录音、访谈等多说话人音频,实现自动化转录。 阅读详情

作者:黄少卿

一、实现环境

操作系统平台:Windows XP

开发IDE:MyEclipse 8.M

使用SDK版本:Android SDK 2.3.3(API 10)

手机模拟器环境: Battery Support && SD Card Support(90M) 其它设置默认。 

 

二、程序功能

为了方便分析,我们这里设置一个TextView和一个Button,点击Button,TextView显示“你点击了Button”。

资源文件:strings.xml中,定义两个新的资源:

    <string name="buttonName">点击我</string>
    <string name="labelName">这里显示文本</string>

组件文件:main.xml中,加入一个Button和一个TextView:

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/labelName"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/buttonName" />

三、程序界面展示

(因为功能一致,这里对功能介绍一笔带过,着重看第四部分)

运行程序,初始状态:


点击Button后,程序界面:



四、代码分析

要事先上述简单功能,涉及到一个onClick事件的出发,下面,列举三种实现方式。

方式一:在activity的onCreate()方法中,嵌入如下代码:

 

 Button button = (Button)findViewById(R.id.button1);
        
 button.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View arg0) {
    TextView textview = (TextView)findViewById(R.id.textView1);
    textview.setText("你点击了Button");    
   }
  });

方式二:让acticity持有TextView,并且新建类Button_Listener实现接口OnClickListener,activity中的代码为:

public class TestOnClickActivity extends Activity {
 private TextView textview;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button button = (Button)findViewById(R.id.button1);  
        this.textview = (TextView)findViewById(R.id.textView1);
        button.setOnClickListener(new Button_Listener(this));        
    }
    
    public TextView getTextview() {
     return this.textview;
    }
}
类Button_Listener的代码为:
class Button_Listener implements OnClickListener {
 private TestOnClickActivity activity;
 
 public Button_Listener(TestOnClickActivity activity) {
  this.activity = activity;
 }

 @Override
 public void onClick(View v) {
  TextView textview = activity.getTextview();
  textview.setText("你点击了Button");
  
 } 
}

 

方式三:在组件文件main.xml中,对Button加入:

android:onClick="onClick_Event"

在activity中加入以下代码:

    public void onClick_Event(View view) {
        TextView textview = (TextView)findViewById(R.id.textView1);
        textview.setText("你点击了Button");        
    }

首先,不用我多说,大家也能想到我列举这三种实现方式的目的,即以前两种的臃肿来衬托最后一种方式的简介。下面我就这三种方式一一分析。

方式一:

在方式一种,程序首先根据Button的ID实例化Button,然后在Button上加入listener监听对象,并同时实现接口OnClickListener的onClick()方法。

这种方式的代码量不是很多,但是有一个弊病:违背了java语言中,面向对象思想中关于解耦合,模块化的思想。 代码将接口的实现全部堆叠在一对小小的括号内,代码较为臃肿,并且很让人费解。

 

方式二:

在方式二中,为了改正方式一的接口实现的不规范,特别重新建立了一个类:Button_Listener。

这种方式代码结构清晰,在为Button加入监听方法是,只需要new Button_Listener(this)即可。但同时,我们也能够发现,因为不属于类TestOnClickActivity,所以类Button_Listener必须通过持有TestOnClickActivity, 将其作为成员。并且,我们需要在TestOnClickActivity 中显示的加入TextView,并书写getTextview()方法,才能够实现我们的程序意图。

虽然代码的模块化,解耦化得到了一定程度上的实现,但换来的结果是代码更多,书写更加繁琐。

 

那么,在这种背景下,方式三显得格外亮眼。

方式三:

在方式三种,我们只需要在TestOnClickActivity 中增加一个成员函数onClick_Event(),并在组件文件中加入对其的使用描述即可。

代码结构简单,清晰,代码量也大大减少,并且通过xml文件的可配置性,增长了工程的可维护性,模块化进一步增强! 这也是我最为推崇的一种方式。

 

以上为个人对Android开发过程中一个onClick事件的个人看法,欢迎大家与我进行交流!




SDMA 如何实现设备对主机内存的访问 摘要:SDMA(System Direct Memory Access)是PCIe设备直接访问主机内存的核心机制,使外设无需CPU干预即可高效读写系统RAM。其实现原理包括:设备作为主控发起DMA请求,通过PCIe Memory TLP访问主机物理地址;完整通路涉及驱动分配DMA安全内存、设备配置、地址转换(IOMMU)和中断通知等步骤;关键技术涵盖地址类型(HPA/IOVA)、TLP格式、缓存一致性和安全防护机制。SDMA广泛应用于GPU、网卡、NVMe等高性能场景,是现代异构计算的基础技术,需软硬件协同 阅读详情

相关推荐

QMT中ContextInfo的使用注意

QMT中ContextInfo下声明的全局变量的使用注意事项

路在何方 2807

Android:按键响应方式第一种onClick属性,第二种方法接口类,第三种方式匿名内部类,第四种方式Activity

一、在xml 中设置按键的onClick 绑定的函数 新建一个工程 然后在相关的页面添加一个Button 运行一下 实际上,现在这个按键一,我们去运行的时候,他是没有任何的反馈的,我们按完它,他没有任何的反馈,那我如何才能让他出现一些反馈呢? 我们用android:onClick="buttonBeCliecked" 我们设置了这个函数,这个函数是java 写的 ,当按键被按下的时候,就会调用java里面的...

m0_57089315的博客 3740

大疆OcuSync系统背后的黑科技:跳频扩频技术如何让你的无人机飞得更稳

本文深入解析了大疆OcuSync系统如何运用跳频扩频技术等先进无线通信方案,显著提升无人机在复杂环境下的飞行稳定性。系统通过跳频扩频与直接序列扩频技术协同工作,结合双频智能切换与多天线MIMO,有效对抗信号干扰与多径效应,确保控制指令与高清图传的可靠、低延迟传输,为用户带来更安心、更流畅的飞行体验。

ol7890123的博客 627

安卓OnClick的四种方法

1.匿名内部类 Button bt_dial = (Button) findViewById(R.id.bt_dial); bt_dial.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { 点击操作 } }); 2.自定义单击事件监听类 Button bt_dial = (Button) findViewById(R.id.bt_dial); bt_dial.setOnC

xxdw1992的博客 6604

西电 程序设计基础课程设计 作业

当时做的程序设计课程的作业. 一共五题, 以报告的形式提交. 质量应该比较高(高傲). 完整内容在这里 高精度计算 问题描述 涉及知识点: 数组, 流程控制, 函数等 要求: 用整型数组表示10进制大整数(超过 2322^{32}232 的整数), 数组的每个元素存储大整数的一位数字, 实现大整数的加减法. 问题分析 结构设计 可将高精度整数写成一个类. 成员变量有: int a[MAXN], len; bool negative; 其中, 数组a用来存储大整数的一个数位, a[1]为个位上的数字, a

Wings 2513

反激电源占空比为何必须小于0.5?次谐波振荡与斜坡补偿详解

在开关电源设计中,峰值电流模式控制因其优异的动态响应和逐周期限流保护而被广泛应用。其工作原理是通过采样电感电流的峰值,与误差电压比较来控制开关管的导通与关断。然而,这种控制方式在反激等隔离拓扑中,当占空比超过50%时,会面临一个固有的稳定性挑战——次谐波振荡。这是由于电流扰动会在相邻开关周期内被放大而非衰减,导致系统在开关频率一半处发生振荡,严重影响输出纹波和可靠性。为解决这一问题,工程上引入了斜坡补偿技术,通过向控制信号叠加一个固定斜率的斜坡,改变环路增益条件,从而在宽输入电压或高占空比需求下维持系统稳定

weixin_29631169的博客 625

安卓开发基于android Studio平台——控件TextView的使用,控件Button的使用,StateListDrawable StateListDrawable

安卓开发基于android Studio平台——控件TextView的使用,控件Button的使用, 1.StateListDrawable StateListDrawable是Drawable资源的一种,可以根据不同的状态,设置不同的图片效果

WZY22502701的博客 2770

手把手教你用ET-BERT预训练模型搞定加密流量分类(附完整代码)

本文详细介绍了如何使用ET-BERT预训练模型实现加密流量分类,包括环境配置、数据预处理、模型微调及优化策略。通过实战代码示例,帮助开发者快速掌握这一技术,提升网络安全领域的加密流量分析能力。

weixin_29166013的博客 493

Android响应事件onClick方法的四种实现方式

Android onClick方法的四种实现方式

Crazy程序猿 3870

[零基础]用docker搭建Hadoop集群

[零基础]用docker搭建Hadoop集群,每一步都有详细的解释!

weixin_56114243的博客 2万+

Go语言Gin框架项目:从零到一搭建一个用户管理系统

本文介绍了一个基于Go语言Gin框架开发的用户管理系统。系统采用MySQL数据库存储数据,使用Bootstrap 5构建现代化UI界面,实现了完整的CRUD功能。主要特点包括:RESTful API设计、前后端双重表单验证、实时搜索功能、SQL防注入措施以及响应式布局。项目结构清晰,包含数据库配置、用户模型、处理器和前端模板等模块。系统提供用户列表展示、新增/编辑表单、删除确认等功能,通过参数化查询确保安全性,并支持按姓名或邮箱搜索用户。

数据知道的博客 3995

Android开发入门——SharedPreferences的使用

//_** 姓名* 默认值:false*/2.创建SharedPreferences的帮助类这个类主要作为各个SharedPreferences的生产工厂使用,并进一步提供简化的提交,获取值的方法。//用户相关的SP/**用户相关Sp相关的key见{@link SpKeyUser}*//**用户相关Sp相关的key见{@link SpKeyDefault}*///sharedPreferences 是否为空/***//**具有默认值。

2401_84123077的博客 1245

Ghost卷积原理与构建YOLOv11的GhostNet变体

本文探讨了在边缘设备部署YOLOv11时使用Ghost卷积进行模型轻量化的实践经验。针对Jetson Nano的4GB内存限制,作者通过替换Backbone中的3x3标准卷积为Ghost卷积,实现了参数减少28%、推理速度提升38%,仅损失1.1%mAP的优化效果。文章详细介绍了Ghost卷积的实现原理、在YOLOv11中的具体替换策略,以及训练调参和部署优化的关键技巧。作者强调轻量化是计算效率与模型性能的权衡,建议工程团队保留原模型和Ghost变体两个版本,根据实际需求灵活切换。Ghost卷积的核心价值在

as1225120794的博客 169

Android三种onClick实现方式详细对比

通过以上方法,可以实现按钮点击和长按事件的完美共存,并灵活控制按钮的各种状态。简洁且内存安全,适合简单逻辑。

百锦再的博客 1万+

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

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

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

安卓应用开发-onClick事件的四种实现方法

安卓应用对于onClick事件的处理有四种方法: 定义事件监听器,再与组件绑定 ButtonClickListener listener = new ButtonClickListener(); button.btn_one.setOnClickListener(listener); ...... class ButtonClickListener implements View.OnClic...

WangZG_X的博客 2753

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java重写onclick事件,安卓中按钮点击事件onClick的两种实现方式

很多的语言都有一些共同的特点,比如OnClick这个东西,可能我们能在js中见到,当然在安卓中也有,可能其他的编程语言也会有这个东西,刚好今天学了这个玩意在安卓中的写法。点击事件大多用在Button按钮上,比如我们要实现点击一个按钮弹出一个Toast,提示我们这个按钮被点击了,那么一般来说有以下这两种实现方式。通过java代码实现点击事件首先在布局xml文件中写一个button,安卓的布局写起来有...

weixin_39883433的博客 1020

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android中onTouch与onClick事件的关系

这几天遇到点关于Android的触摸事件相关的,还跟onClick有关,暂且记下: LinearLayout分别设置了onTouchListener,onClickListener,onLongClickListener及onTouchEvent回调 1、在屏幕上触摸之后基本的执行流程如下: onTouch,action=0 onTouchEvent,action=0 onTou

mydreamongo的专栏 2万+

android onclick方法吗,Android中button的onClick事件几种方法

Android中button的onClick事件几种方法发布时间:2020-09-03 02:36:31来源:脚本之家阅读:100作者:水桶前辈Android中button的onClick事件几种方法利用三种方法,学习button的监听事件。方法一源码如下:package com.example.androidtest;import android.os.Bundle;import android...

weixin_42151373的博客 441

Android点击事件属于,android中三种onClick事件的实现,与对比

在达内培训,刚接触android不久,对于button的onclick事件有点纠结。因为上了两三天就换了个老师,两个老师讲onclick事件用了两种不同的实现方法,我才发现可以有好几种方式实现。方式一:在activity的onCreate()方法中,嵌入如下代码:Button button =(Button)findViewById(R.id.button1);button.setOnClickL...

weixin_31677427的博客 807

Android View的onTouch、onClick和onLongClick事件分析

一般我们在开发自定义View的时候,多多少少会涉及onTouch、onClick和onLongClick这几个事件,避免不了就是解决这个几个事件的冲突。往往需要我们程序员来覆写onTouchEvent方法来进行解决。下面来分析下: 三个函数:public boolean onTouch(View v, MotionEvent event); public boolean onLongClick(V

金 2547

android中onclick事件失效,Android中OnClick事件的三种方法

//第一种方式Button Btn1 = (Button)findViewById(R.id.button1);//获取按钮资源Btn1.setOnClickListener(new Button.OnClickListener(){//创建监听public void onClick(View v) {String strTmp = "第一种实现OnClick事件的写法";}});//第二种方式B...

weixin_32515349的博客 3538

Android开发案例Onclick点击事件switch调用分类04

第一步:设置sting.xml中配置Button。 resources> string name="app_name">04Onclicksstring> string name="action_settings">Settingsstring> string name="app_phone">点击按钮事件展示string> string name="app_

想想挺简单的博客 3804
上一篇: 03_Activity 生命周期介绍【图解】
下一篇: 04_Android框架及关键组件实验【图解】
pku_android
博客等级 码龄15年 450粉丝 151原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值