#android #android-animation #android-button
#Android #android-анимация #android-кнопка
Вопрос:
Я перепробовал многие приведенные здесь коды, но ничего не сработало, и просто нет руководств по использованию рисованной анимации при нажатии кнопки.
Но НИЧЕГО не получалось.
Я попробовал это:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/pressed" />
<item android:state_pressed="false" android:drawable="@drawable/lostpressd" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/e1" android:duration="50" />
<item android:drawable="@drawable/e2" android:duration="50" />
and so on
и потерянное нажатие в обратном порядке.
Комментарии:
1. Чего вы на самом деле хотите? Эффект щелчка при нажатии кнопки?
2. Как следует из названия, при нажатии кнопки должна воспроизводиться анимация с возможностью рисования.
Ответ №1:
я решил вашу проблему:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/image1" android:state_pressed="true" />
<item android:drawable="@drawable/image2" android:state_pressed="false" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item
android:drawable="@drawable/image1"
android:duration="200" />
<item
android:drawable="@drawable/image2"
android:duration="200" />
<item
android:drawable="@drawable/image3"
android:duration="200" />
</animation-list>
в вашей деятельности :
final ImageView img = (ImageView) findViewById(R.id.my_img);
img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
img.setBackgroundResource(R.drawable.anim);
AnimationDrawable animationDrawable = (AnimationDrawable) img.getBackground();
animationDrawable.setVisible(true, true);
animationDrawable.start();
}
});
Комментарии:
1. Привет, спасибо за вашу попытку. Но я не использую ImageView. И на кнопке я получаю android.graphics.drawable. StateListDrawable не может быть преобразован в android.graphics.drawable. Анимациярисовываемая
Ответ №2:
Сначала создайте анимационный векторный рисунок. Это довольно хороший (простой) урок:https://medium.com/@naththeprince/delightful-animations-in-android-d6e9c62a23d3. Далее в вашем xml
файле определите обычную кнопку, вот так:
<Button
android:drawableLeft="@drawable/your_animated_vector_drawable"
android:id="@ id/example_button"/>
и добавьте любые другие свойства, которые вы хотите внутри Button
.
В вашем коде используйте это:
Button button = (Button) findViewById(R.id.example_button);
button.setOnClickListener(v -> {
// Get the left drawable: (the one you set in the xml file)
AnimatedVectorDrawable avd =
(AnimatedVectorDrawable) showPopup.getCompoundDrawables()[0];
avd.start();
});
У меня это сработало. Надеюсь, это сработает и у вас!