Android用onTouch()触摸按钮的文本

时间:2011-02-12 19:54:39

标签: java android view

我正在尝试制作类似于按下按钮时播放声音的鼓机。但是,我无法为每个按钮更改声音,因为一个onTouch方法处理所有事件。这是迄今为止的代码:

package com.henzl0l.drummaschine;

import java.io.IOException;

import android.app.Activity; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.widget.Button; import android.view.MotionEvent;

public class DrumMaschine extends Activity { /** Called when the activity is first created. */ final String[] sList = new String[] {"/sdcard/Music/kick.wav","/sdcard/Music/hat.wav" }; final MediaPlayer mPlayer1 = new MediaPlayer(); final MediaPlayer mPlayer2 = new MediaPlayer(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

Button btn_main1 = (Button) findViewById(R.id.cmd_main1); Button btn_main2 = (Button) findViewById(R.id.cmd_main2); btn_main1.setOnTouchListener(tListener1); btn_main2.setOnTouchListener(tListener1); } private OnTouchListener tListener1 = new OnTouchListener(){ public boolean onTouch(View v, MotionEvent event) { switch ( event.getAction() ) { case MotionEvent.ACTION_DOWN: sPlay(0,true); } return false; } }; private void sPlay(Integer num, Boolean loop){ try { mPlayer1.reset(); mPlayer1.setDataSource(sList[num]); mPlayer1.prepare(); mPlayer1.start(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } };

}

我似乎无法使用v获取按钮的文本(现在是'1','2'等),所以我非常难过。我现在只玩了两天Android。对不起,如果什么都没有意义,呵呵。

1 个答案:

答案 0 :(得分:1)

onTouch方法有一个View参数,它是对触摸视图的引用。将此转换为Button以获取其标题:

String caption=((Button)v).getText();

顺便问一下,你为什么要使用onTouchListener?如果您只想检测点击次数,请使用onClickListener,它更简单(并且具有相同的参数)。

使用标签而不是标题可能是另一种增强功能:您可以使用setTag向视图添加标签(它也接受可选键)并通过getTag检索它们。例如,您可以使用声音样本编号标记按钮。

相关问题