Я создаю приложение для фортепиано в студии android. Я использую метод onTouch()
, чтобы проверить, нажал ли пользователь кнопку, а затем воспроизвести звук. Я создал два нарисованных ресурса для клавиш пианино: один должен использоваться, когда клавиши пианино не нажаты, а другой - при нажатии клавиши пианино. Как мне установить условие в моем методе onTouch (), чтобы установить фон для соответствующих рисованных ресурсов, когда клавиши пианино нажаты, а когда они не нажаты? Спасибо!
Вот код MainActivity. java
public class MainActivity extends AppCompatActivity implements View.OnTouchListener {
...
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (v.getId()) {
case R.id.p1:
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:{
//set the background to key_pressed
soundPoolObject.play(c3, 1, 1, 0, 0, 1);
break;}
case MotionEvent.ACTION_UP:{
//set the background to key_normal
soundPoolObject.pause(c3);
break;}
}
}
return true;
}
}
Drawable resource key_pressed. xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#00000000" />
</shape>
</item>
<item android:top="10dp">
<shape android:shape="rectangle">
<corners android:radius="5dp" />
<solid android:color="#FFFFFF"/>
</shape>
</item>
</layer-list>
Drawable resource key_normal. xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/black_shadow"/>
<item android:bottom="10dp" >
<shape android:shape="rectangle" >
<corners android:radius="5dp" />
<solid android:color="#FFFFFF"/>
</shape>
</item>
</layer-list>