Установка фона в методе OnTouch в студии android - PullRequest
0 голосов
/ 23 апреля 2020

Я создаю приложение для фортепиано в студии 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>

1 Ответ

1 голос
/ 23 апреля 2020

Попробуйте это:

...
            case R.id.p1:
                switch (event.getAction()){
                    case MotionEvent.ACTION_DOWN:{
                        //set the background to key_pressed
                        v.setBackgroundResource(R.drawable.key_pressed);
                        soundPoolObject.play(c3, 1, 1, 0, 0, 1);
                        break;}
                    case MotionEvent.ACTION_UP:{
                        //set the background to key_normal
                        v.setBackgroundResource(R.drawable.key_normal);
                        soundPoolObject.pause(c3);
                        break;}
                }
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...