0

我正在制作音板,我想实现长按来分享声音。

我正在switch Case为每个按钮使用一个

 public void MainMMP(View view){
    switch (view.getId()) {
        case R.id.button1:
                MainMMP.release();
                MainMMP = MediaPlayer.create(this, R.raw.xxx1);
                MainMMP.start();
                break;
        case R.id.button2:
                MainMMP.release();
                MainMMP = MediaPlayer.create(this, R.raw.xxx2);
                MainMMP.start();
                break;
        case R.id.button3:
            MainMMP.release();
            MainMMP = MediaPlayer.create(this, R.raw.xxx3);
            MainMMP.start();
            break;

现在我想实现长按。我在这里尝试了很多不同的代码,但它对我不起作用。我不知道该onLongClick声明在哪里以及如何放置。

有人可以告诉我一个工作方法吗?如果长按它应该只给我一个我知道该方法有效的 Toast 吗?

4

2 回答 2

0

你可以用这个

    private View.OnLongClickListener listener = new View.OnLongClickListener() {

    @Override
    public boolean onLongClick(View view) {
        switch (view.getId())
           case R.id.button1:
             // Do something...
             break;
           case R.id.button2:
             // Do something else...
             break;
        // If you still want to get normal click callbacks return true,
        // if you do not then return false.
        return true; 
    }
}

在您的代码中的某处

Button button1 = (Button)findViewById(R.id.button1);
Button button2 = (Button)findViewById(R.id.button2);
button1.setOnLongClickListener(listener);
button2.setOnLongClickListener(listener);

或者更好的这个

onClick//一种常用的获取回调的推荐方法是实现回调接口onLongClickwhateverActivity

class YourActivity extend Activity implements View.OnLongClickListener {

    @Override
    public boolean onCreate(/* ... */) {
        // ...
        button1.setOnLongClickListener(this);
        button2.setOnLongClickListener(this);
    }

    @Override
    public boolean onLongClick(View view) {
        // Same code as the one above
    }
}
于 2017-01-30T23:59:09.940 回答
0

您可以在所需的位置添加 OnLongClickListener,例如在 onCreate 方法中。

尝试使用以下代码:

    Button button = (Button)findViewById(R.id.button);
    button.setOnLongClickListener(new View.OnLongClickListener() {

    @Override
    public boolean onLongClick(View v) {

        //Your code

        return false; // True if you want to execute simple click code too
    }
});
于 2017-01-30T21:45:22.053 回答