#android #animation
#Android #Анимация
Вопрос:
У меня есть код, который заставляет изображение анимироваться слева от экрана, затем я хочу, чтобы изображение анимировалось прямо на экране позже. Но когда приходит время снова включить анимацию перед тем, как она отобразится на экране, она мигает в своем последнем месте, а затем переходит и анимируется на экране.
xml нравится вот так:
animate on
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillAfter="true">
<translate
android:fromXDelta="-50%p"
android:toXDelta="0%p"
android:duration="800" />
</set>
animate off
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillAfter="true">
<translate
android:fromXDelta="0%p"
android:toXDelta="-50%p"
android:duration="800" />
</set>
java code
mEditMessage.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
if (mEditMessage.getText().length()==0){
Animation fade_in = AnimationUtils.loadAnimation(MessageActivity.this, R.anim.move_right_onto_screen);
AnimationSet animateIn = new AnimationSet(false);
animateIn.addAnimation(fade_in);
animateIn.setFillAfter(true);
mIvAttachment.startAnimation(animateIn);
mIvAudio.startAnimation(animateIn);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
if (mEditMessage.getText().length()==0){
Animation fade_out = AnimationUtils.loadAnimation(MessageActivity.this, R.anim.move_left_off_screen);
AnimationSet animate = new AnimationSet(false);
animate.addAnimation(fade_out);
animate.setFillAfter(true);
mIvAttachment.startAnimation(animate);
mIvAudio.startAnimation(animate);
}
}
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
}
});
Комментарии:
1. Пользовательский класс TranslateAnimation для этого. Это лучше, поскольку оно будет вычислять размеры во время выполнения. Это легко понять и применить, прочтите это .
2. спасибо, я посмотрю!
3. Это часть ObjectAnimator, так что вы можете сначала взглянуть на это.
4. спасибо, что выглядело отлично, знаете ли вы какие-либо похожие методы анимации, делающие изображение больше?
5. Да, во время выполнения есть классы для каждого типа анимации, такие как ScaleAnimation. Вы также можете использовать анимацию свойств, она проста в использовании и содержит всего несколько строк кода. Я бы предпочел, чтобы PropertyAnimation анимировал представление.