Tentei fazer uma animação simples de canto inferior esquerdo para centro direito e depois para centro da tela
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
screenWidthPx = size.x;
screenHeightPx = size.y;
final TranslateAnimation slideFromRight = new TranslateAnimation(screenWidthPx, screenWidthPx/2, screenHeightPx, screenHeightPx);
slideFromRight.setInterpolator(new AccelerateDecelerateInterpolator());
slideFromRight.setStartOffset(300);
slideFromRight.setDuration(600);
slideFromRight.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
TranslateAnimation titleIconSlideUp = new TranslateAnimation(0, screenWidthPx/2, screenHeightPx, screenHeightPx/2);
titleIconSlideUp.setInterpolator(new AccelerateDecelerateInterpolator());
titleIconSlideUp.setStartOffset(500);
titleIconSlideUp.setFillAfter(true);
titleIconSlideUp.setDuration(1000);
tvAnimView.startAnimation(titleIconSlideUp);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
tvAnimView.startAnimation(slideFromRight);
a segunda animação dentro onAnimationEnd está funcionando bem. Mas não sei por que a primeira animação não está funcionando bem. Onde meu layout é simples
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rl_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false"
tools:context="broadpeak.animationlearning.AnimTestActivity">
<TextView
android:id="@+id/tv_anim_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World"
android:textColor="@color/colorPrimaryDark"
android:textSize="24sp" />
</RelativeLayout>
Respostas:
0 para resposta № 1Você deve iniciar sua animação usando esta linha:
tvAnimView.startAnimation(slideFromRight);
Basta colocar este pedaço de código no listener de cliques ou onCreate(), onResume()
métodos, de acordo com suas necessidades.