Android: просмотр и выход Fade
Мне нужно отобразить кнопку изображения, которая исчезает и выходит (и в и из и так далее...)
Прозрачность может быть установлена с помощью setAlpha, но как я могу затухать? Я имею в виду, что я не могу сделать это в другом потоке, потому что вам нужно делать такие вещи в потоке пользовательского интерфейса, правильно?
Я думаю, это можно сделать с помощью анимаций, но я ничего не нашел, потому что у меня нет опыта работы с анимацией и не знаю, что искать...
На самом деле я действительно хочу, чтобы вытереть одно изображение и другое, но я думаю, что самый простой способ - разместить первую кнопку изображения под вторым и просто затушить вторую. Или есть более простой способ сделать это?
Ответы
Ответ 1
Вот решение, которое я использую сейчас, которое работает на уровне API ниже 12:
AlphaAnimation anim = new AlphaAnimation(1.0f, 0.0f);
anim.setDuration(1000);
anim.setRepeatCount(NUM_REPEATS);
anim.setRepeatMode(Animation.REVERSE);
button.startAnimation(anim);
Ответ 2
Это анимация, которую мы использовали в нашем проекте. Spinner - это представление, поэтому вы можете изменить его с помощью своего изображения. Так что действительно 2 изображения поверх каждого другого, один видимый невидимый. Так мы это сделали. Надеюсь, что это поможет.
spinner.setVisibility(View.VISIBLE);
spinner.setAlpha(0);
spinner.animate().setDuration(200).alpha(1).setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
spinner.setVisibility(View.VISIBLE);
}
});
infoActivityContent.animate().setDuration(200).alpha(0).setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
infoActivityContent.setVisibility(View.GONE);
mainPresenter.logout();
}
});
Ответ 3
Вы должны прочитать Crossfading Two Views от Android developers
. В этом руководстве объясняется, как сделать то, что вы хотите.
Ответ 4
Внедрить класс анимации (вы можете загрузить его через XML или создать его динамически).
Затем вы можете установить его через API setAnimation (анимация анимации).
Ответ 5
Вы можете сделать несколько последовательных кадров вашего первого изображения, преобразующегося во второе изображение и обратно, а затем определить их как animation-list
и начать анимацию в onCreate
button_frames.xml:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/frame1" android:duration="100" />
<item android:drawable="@drawable/frame2" android:duration="100" />
....
расположение:
<ImageView android:id="@+id/button"
android:background="@drawable/button_frames"/>
OnCreate:
ImageView button= (ImageView)findViewById(R.id.button);
mAnimation = (AnimationDrawable) animationView.getBackground();
button.postDelayed(new Runnable() {
public void run() {
mAnimation.start();
}
}, 100);