Воспроизведение уникальных звуков с помощью кнопок, созданных программно - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть GridLayout, полный кнопок (в XML), которые используют теги для воспроизведения определенных c звуков при нажатии кнопки в зависимости от ее тега.

Я пытаюсь передать код в моей функции OnClick «playSound» с точностью до OnClickListener, и при этом достигается тот же результат, но с использованием программно сгенерированных кнопок.

Так вот, как я привык проигрывать свои звуки: 1006 * (работа с кнопками XML)

public void playSound(View view) {
    final Button soundButton = (Button) view;  
    mediaPlayer = MediaPlayer.create(this, getResources().getIdentifier(soundButton.getTag().toString(), "raw", getPackageName()));
    mediaPlayer.start(); 
}

Вот как я теперь программно добавляю кнопки: (до XML GridLayout)

Button[] button = new Button[3];
GridLayout grid;
List<String> list;

list = new ArrayList<>();
    list.add("Dog");
    list.add("Cat");
    list.add("Pig");

private void test() {
    grid = (findViewById(R.id.gridLayout));
    for (int i = 0; i < button.length; i++) {
        button[i] = new Button(this);
        int buttonText = i;
        // int buttonSound = i;

        // button[i].setTag(list.get(buttonSound));
        button[i].setText(list.get(buttonText));

        button[i].setOnClickListener(btnClicked);
        grid.addView(button[i]);
    }
}

И вот как мне теперь нужно обрабатывать мою функцию "playSound": (с использованием OnClickListener, а не "OnClick")

View.OnClickListener btnClicked = new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    }
};

Я не уверен, возможно ли по-прежнему читать Теги через OnClickListener и создание MediaPlayer таким образом, я изо всех сил пытаюсь удовлетворить автокоррекцию Android Studio, но я думал о реализации массива всех звуковых файлов и вызове из этого массива при создании моего MediaPlayer.

int[] buttonSound = new int[]{R.raw.dog, R.raw.cat, R.raw.pig};

Как я могу совершить sh это?

...