#java #android #singleton #android-animation #android-button
#java #Android #синглтон #android-анимация #android-кнопка
Вопрос:
У меня есть анимация, которую я хочу применить к каждой кнопке в моем приложении. Поэтому я не хочу вызывать AnimationUtils.loadAnimation() в каждом методе activity onCreate. Я хотел бы вызвать этот метод только один раз, когда приложение запускается для инициализации моего объекта анимации, а затем получить его (с помощью геттера) в моих различных действиях. Я новичок в программировании на Android, я планировал использовать одноэлементный шаблон, но он выглядит как «небезопасный» в Android, связанный с этой статьей и другими страницами Stackoverflow. (https://programmerr47.medium.com/singletons-in-android-63ddf972a7e7 )
Есть ли способ создать мою анимацию при запуске приложения и поделиться ею между каждым действием? И стоит ли проводить некоторую оптимизацию?
Ответ №1:
Я бы предложил расширить android Button
/ AppCompatButton
class, добавив нужную функциональность в расширенный класс и используя эту кнопку везде в вашем приложении, что намного проще и, вероятно, наиболее правильным способом,
Например:
AnimatedButton.java:
package com.example.myapplication;
import android.content.Context;
import android.util.AttributeSet;
public class AnimatedButton extends androidx.appcompat.widget.AppCompatButton {
public AnimatedButton(Context context) {
super(context);
createAnimation();
}
public AnimatedButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AnimatedButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
private void createAnimation() {
// here create the animation and call
// setAnimation([YOUR_ANIMATION_HERE]);
// now you can simply call customButton.animate();
// from anywhere in the code that uses the button and it should work
}
}
В вашем XML-файле, где вы хотите использовать кнопку:
<com.example.myapplication.AnimatedButton
android:id="@ id/btn_animate"
android:layout_width="180dp"
android:layout_height="80dp"
android:text="Animate" />
Комментарии:
1. Рад помочь. Пожалуйста, дайте положительный ответ и отметьте вопрос как решенный, если это так. Счастливого кодирования.