关闭

Android自定义点击带声音的控件TextView/Button/ListView

标签: 自定义textviewbutton控件发音
1174人阅读 评论(2) 收藏 举报
分类:

实现思路:
android控件在setonclick方法时,在点击时,就会触发performClick()方法,我们可以在自定义控件实现此方法,调用一个发声音的方法,即可以实现点击控件发出声音。

自定义控件:
这里只写一个Imageview自定义,其他的所有控件几乎都是一样,实现performClick()即可。

public class MyImageView extends ImageView {

    public MyImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public MyImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyImageView(Context context) {
        super(context);
    }

    @Override
    public boolean performClick() {
        //调用发声方法
        BaseApplication.playClickVoice(getContext());
        return super.performClick();
    }
}

我在Application里面自定义了一个发声方法,在网上百度了一个音频文件,把音频文件放在raw文件下

    public static MediaPlayer mp;  //音频播放
    public static void playClickVoice(Context context){
        if (true) {
            try {
                if (mp == null) {
                    mp = new MediaPlayer(); 
                }   
                mp.reset();
                AssetFileDescriptor afd = context.getResources().openRawResourceFd(R.raw.button_click_voice);
                if (afd == null)  return; 
                mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
                afd.close();

                mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
                mp.prepare();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            mp.start();
        } 
    }
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:57757次
    • 积分:1046
    • 等级:
    • 排名:千里之外
    • 原创:47篇
    • 转载:2篇
    • 译文:1篇
    • 评论:14条
    最新评论