监听的事件处理机制
事件侦听器机制是一种委托的事件处理机制。事件源(组件)事件处理被委托给事件侦听器。当指定的事件发生在事件源中时,将通知事件侦听器执行相应的操作
重写点击事件的处理方法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);
}