Pergunta

Eu tenho a seguinte configuração de visualização em uma das minhas atividades:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/photoLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/photoImageView"
android:src="@drawable/backyardPhoto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:scaleType="centerInside"
android:padding="45dip"
>
</ImageView>
</LinearLayout>

Sem um conjunto de animação, isso é exibido muito bem. No entanto, quero exibir uma animação muito simples. Então, na substituição da minha atividade, tenho o seguinte:

@Override
public void onStart() {
 super.onStart();

    mPhotoImageView = (ImageView) findViewById(R.id.photoImageView);

 float offset = -25;
 int top = mPhotoImageView.getTop();

 TranslateAnimation anim1 = new TranslateAnimation(
Animation.ABSOLUTE, 0, Animation.ABSOLUTE, 0,
Animation.ABSOLUTE, top, Animation.ABSOLUTE, offset);
 anim1.setInterpolator(new AnticipateInterpolator());
    anim1.setDuration(1500);
    anim1.setStartOffset(5000);

    TranslateAnimation anim2 = new TranslateAnimation(
      Animation.ABSOLUTE, 0, Animation.ABSOLUTE, 0,
      Animation.ABSOLUTE, offset, Animation.ABSOLUTE, top);
 anim2.setInterpolator(new BounceInterpolator());
    anim2.setDuration(3500);
    anim2.setStartOffset(6500);

    mBouncingAnimation = new AnimationSet(false);
    mBouncingAnimation.addAnimation(anim1);
    mBouncingAnimation.addAnimation(anim2);

    mPhotoImageView.setAnimation(mBouncingAnimation);
}

O problema é que, quando a atividade é exibida pela primeira vez, a posição inicial da foto não está no centro da tela com estofamento. Parece que o primeiro quadro da animação já está carregado. Somente após a conclusão da animação, o PhotoImageView "Snap" de volta ao local pretendido.

Eu olhei e parecia e não consegui descobrir como evitar esse problema. Quero que o PhotoImageView comece no centro da tela e, em seguida, a animação aconteça e devolva -a ao centro da tela. A animação deve acontecer por si só sem interação do usuário.

Foi útil?

Solução

MphotoImageView.gettop () retornará 0 em OnCreate (), você precisa esperar até que o primeiro layout/desenho tenha obtido a posição correta da sua visualização.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top