2012-02-20 3 views
0

Если я реализую OnClickListener, звуковой эффект будет работать при нажатии кнопки. При использовании OnTouchListener звуковой эффект не срабатывает при касании. Итак, как включить звуковой эффект при реализации OnTouchListener?Как включить звуковой эффект при касании кнопки?

EDIT:

Вот код, если я использую щелкать подход:

public class CalculatorActivity extends Activity implements OnClickListener 
{ 
    //... 
    private Button btn1; 
    private EditText edLCD; 
    //... 

    public void onCreate(Bundle savedInstanceState) 
    { 
     //... 
     btn1 = (Button) findViewById(R.id.d1); 
     btn1.setOnClickListener(this); 

     edLCD = (EditText) findViewById(R.id.edLCD); 
    } 

    //... 

    public void onClick(View v) 
    { 
     edLCD.setText(edLCD.getText().toString() + "1"); 
    } 
} 

А вот код, если я использую трогательную подход:

public class CalculatorActivity extends Activity implements OnTouchListener 
{ 
    //... 
    private Button btn1; 
    private EditText edLCD; 
    //... 

    public void onCreate(Bundle savedInstanceState) 
    { 
     //... 
     btn1 = (Button) findViewById(R.id.d1); 
     btn1.setOnTouchListener(this); 

     edLCD = (EditText) findViewById(R.id.edLCD); 
    } 

    //... 

    public boolean onTouch(View v, MotionEvent event) 
    { 
     if(event.getAction() == MotionEvent.ACTION_DOWN) 
     { 
      edLCD.setText(edLCD.getText().toString() + "1"); 
     } 
     return true; 
    } 
} 
+1

Показать свой код. Также почему вы хотите сделать это для действия «касания», а не для действия «щелчка»? – Squonk

+0

@MisterSquonk Прикосновение к кнопке дает более быстрый отклик, в то время как нажатие на нее не будет отвечать, пока вы не поднимете палец с экрана. Кроме того, какой код я должен вам показать? Я просто прошу о способе включения звукового эффекта при касании кнопки. –

+0

Просто используйте onClick, для некоторых кнопок не требуется реагировать onTouch, а не onClick. Не нарушайте UX! –

ответ

3

Try .. .

public boolean onTouch(View v, MotionEvent event) 
{ 
    if(event.getAction() == MotionEvent.ACTION_DOWN) 
    { 
     v.playSoundEffect(SoundEffectConstants.CLICK); 
     edLCD.setText(edLCD.getText().toString() + "1"); 
    } 
    return true; 
} 
+0

+1 СОВЕРШЕННО. Спасибо mate :) –

+0

Рад помочь. Мы попали туда, в конце концов. :) – Squonk