前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开发时遇到监听的事件处理机制和SoundPool播放音效解决方法以及外部类的使用【Android】

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

作者头像
上进小菜猪
发布2022-12-27 17:03:19
1.4K0
发布2022-12-27 17:03:19
举报

监听的事件处理机制

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

代码语言:javascript
复制
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文件来处理事件。此表单较少使用!因为外部类不能直接访问用户接口类中的组件,所以应该通过构造方法传入组件以供使用;结果是代码不够简洁! 把文本框作为参数传入 ,点击后设置文本框显示的文字

代码语言:javascript
复制
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接口 ,重写接口中的抽象方法

代码语言:javascript
复制
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消息远程执行代码。

代码语言:javascript
复制
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”);

代码语言:javascript
复制
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()方法!

代码语言:javascript
复制
   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);

    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 监听的事件处理机制
  • 外部类
  • SoundPool播放音效
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档