Как динамически применить одну рисованную рябь для нескольких кнопок в Java? - PullRequest
0 голосов
/ 13 октября 2018

Я хочу правильно применить одну и ту же рисованную рябь к нескольким кнопкам.Но этого не происходит, потому что волновой эффект применяется только к последней кнопке.Я также использовал рисование градиента внутри рисованной пульсации.Это прекрасно работает на каждой кнопке.Просто эффект ряби не применяется ни к одной кнопке, кроме последней.Он также не работает на уровне API 8. Я знаю, что этот метод не работает на API до уровня API 21. Но я не нашел учебника по динамическому дизайну кнопок.

Я делаю всевнутри события при создании.Я не могу написать коды за пределами события при создании, а также не могу использовать какой-либо XML для этой конкретной ситуации.

Вот вывод:

enter image description here

Вот код:

android.graphics.drawable.GradientDrawable gd_btone = new android.graphics.drawable.GradientDrawable();

gd_btone.setCornerRadius(4);
gd_btone.setStroke(2, Color.parseColor("#ffffff"));
gd_btone.setColor(Color.parseColor("#232323"));

android.graphics.drawable.RippleDrawable ripdr = new android.graphics.drawable.RippleDrawable(new android.content.res.ColorStateList(new int[][]{new int[]{}}, new int[]{ Color.parseColor("#888888")}), gd_btone, null);

button1.setBackground(ripdr);
button2.setBackground(ripdr);
button3.setBackground(ripdr);
button4.setBackground(ripdr);

Кроме того, кто-нибудь может мне помочь сделать этот фрагмент кода обратно совместимым с API-уровнем 8 и как установить поле наэто рисовать?Я не разработчик Android, поэтому я не знаю много об этом.

1 Ответ

0 голосов
/ 13 октября 2018

Я вижу, что эффект капельки применяется к последней кнопке, даже когда нажаты другие кнопки.Поэтому я думаю, что класс RippleDrawable не поддерживает то поведение, которое вы ищете;один экземпляр может быть привязан только к одной кнопке за раз.

Я бы предложил просто создать четыре отдельных экземпляра RippleDrawable.

Отказ от ответственности: я не работал с RippleDrawables, но это чисто основанона предоставленный вами вывод и личный опыт разработки под Android.

...