开发时遇到监听的事件处理机制和SoundPool播放音效解决方法以及外部类的使用【Android】

简介: 开发时遇到监听的事件处理机制和SoundPool播放音效解决方法以及外部类的使用【Android】

监听的事件处理机制

事件侦听器机制是一种委托的事件处理机制。事件源(组件)事件处理被委托给事件侦听器。当指定的事件发生在事件源中时,将通知事件侦听器执行相应的操作
重写点击事件的处理方法onClick()

public class MainActivity extends Activity {    
    private Button btnshow;    
        
    @Override    
    protected void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.activity_main);    
        btnshow = (Button) findViewById(R.id.btnshow);    
        btnshow.setOnClickListener(new OnClickListener() {    
            @Override    
            public void onClick(View v) {        
                Toast.makeText(getApplicationContext(), "你点击了按钮", Toast.LENGTH_SHORT).show();    
            }    
        });    
    }        
} 

事件监视机制由三种类型的对象组成:事件源、事件和事件侦听器。处理流程如下:步骤1:为事件源(组件)设置侦听器以侦听用户操作步骤2:用户操作触发事件源的侦听器步骤3:生成相应的事件对象步骤4:将此事件源对象作为参数传递给事件侦听器步骤5:事件侦听器判断事件对象,执行相应的事件处理程序(相应事件的处理方法)
在这里插入图片描述

外部类

它是创建另一个Java文件来处理事件。此表单较少使用!因为外部类不能直接访问用户接口类中的组件,所以应该通过构造方法传入组件以供使用;结果是代码不够简洁!
把文本框作为参数传入 ,点击后设置文本框显示的文字

public class MyClick implements OnClickListener {    
    private TextView textshow;    
    public MyClick(TextView txt)    
    {    
        textshow = txt;    
    }    
    @Override    
    public void onClick(View v) {    
        textshow.setText("点击了按钮!");    
    }    
}

只需让Activity类实现XxxListener事件侦听器接口,定义并重写相应的事件处理程序方法,例如在Activity:Activity中实现OnClickListener接口,并重写onClick(view)方法。为某些组件添加事件侦听器对象时,可以直接设置Xxx。侦听器(this)
让Activity方法实现OnClickListener接口 ,重写接口中的抽象方法

public class MainActivity extends Activity implements OnClickListener{    
    private Button btnshow;    
    @Override    
    protected void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.activity_main);    
            
        btnshow = (Button) findViewById(R.id.btnshow);        
        btnshow.setOnClickListener(this);    
    }    
    @Override    
    public void onClick(View v) {    
        Toast.makeText(getApplicationContext(), "点击了按钮", Toast.LENGTH_SHORT).show();         
    }         
}   

SoundPool播放音效

在Android上,预设的多媒体框架是OpenCore。OpenCore的优势在于它考虑了跨平台的可移植性,并得到了多方验证,因此相对稳定;然而,它的缺点是太大和复杂,需要相当长的时间来维护。
自Android 2.0以来,谷歌推出了Stagefright,其架构略为简单。当然,它并没有完全放弃OpenCore。它主要构建了一个OMX层,该层仅指OpenCore的OMX组件。有一种逐渐取代OpenCORE的趋势,但在今年8月,发现了一个Stagefright漏洞,该漏洞允许通过发送特制的MMS消息远程执行代码。

SoundPool.Builder spb = new SoundPool.Builder();
spb.setMaxStreams(10);
spb.setAudioAttributes(null);    //
SoundPool sp = spb.build();      //

创建SoundPool对象,转换音频格式

上下文:上下文
ResId:资源ID
优先级:这是一个无用的参数。建议将其设置为1以保持与未来的兼容性
路径:文件路径
FileDescriptor:它似乎是一个流。我不知道
AssetFileDescriptor:从资产目录中读取资源文件。用法:AssetFileDescriptor=assetManager.openFd(“biaobiao.mp3”);

play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)

--相关属性:
Android:isIndicator:是否用作指示。用户无法更改。默认值为false
Android:numStars:显示多少颗星,必须是整数
Android:评级:默认评级值,必须是浮点数
Android:stepSize:每次得分所增加的值必须是一个浮点数
除了以上这些,还有两种款式供我们选择,但不建议使用,因为它们很难看。它们分别是:
style=“?android:attr/ratingBarStyleSmall”
style=“?android:attr/ratingBarStyleIndicator”
--事件处理:只需为RatingBar设置OnRatingBarChangeListener事件,然后重写onRatingChanged()方法!

   private void bindViews() {
        btn_play1 = (Button) findViewById(R.id.btn_play1);
        btn_play2 = (Button) findViewById(R.id.btn_play2);
        btn_play3 = (Button) findViewById(R.id.btn_play3);
        btn_play4 = (Button) findViewById(R.id.btn_play4);
        btn_play5 = (Button) findViewById(R.id.btn_play5);
        btn_release = (Button) findViewById(R.id.btn_release);

        btn_play1.setOnClickListener(this);
        btn_play2.setOnClickListener(this);
        btn_play3.setOnClickListener(this);
        btn_play4.setOnClickListener(this);
        btn_play5.setOnClickListener(this);
        btn_release.setOnClickListener(this);

    }
相关文章
|
10月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1775 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
10月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1133 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
10月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1209 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
11月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
941 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
10月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
453 0
|
11月前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
1404 6
|
移动开发 Java 编译器
Kotlin与Jetpack Compose:Android开发生态的演进与架构思考
本文从资深Android工程师视角深入分析Kotlin与Jetpack Compose在Android系统中的技术定位。Kotlin通过空安全、协程等特性解决了Java在移动开发中的痛点,成为Android官方首选语言。Jetpack Compose则引入声明式UI范式,通过重组机制实现高效UI更新。两者结合不仅提升开发效率,更为跨平台战略和现代架构模式提供技术基础,代表了Android开发生态的根本性演进。
571 0
|
Android开发
Android 自用 App保活——音乐播放保活适配8.0 (贼好用)
使用后台播放音乐的方式实现 app常驻内存。
4975 0
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
6032 77
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
723 11

热门文章

最新文章