0

アプリを実行するとき、コードでアニメーションを準備します。

public class MainActivity extends ActionBarActivity{

private Animation buscarAnimation2 = null;
private Animation buscarAnimation3 = null;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    RelativeLayout RL=(RelativeLayout)findViewById(R.id.RelativeLayout1);


    buscarAnimation2 = AnimationUtils.loadAnimation(this, R.anim.boton2);
    buscarAnimation3 = AnimationUtils.loadAnimation(this, R.anim.boton1);

    RL.getViewTreeObserver().addOnGlobalLayoutListener(
            new ViewTreeObserver.OnGlobalLayoutListener() {
                public void onGlobalLayout() {
                    TextView t1=(TextView)findViewById(R.id.text_trad);
                    TextView t2=(TextView)findViewById(R.id.text_rell);
                    TextView t3=(TextView)findViewById(R.id.text_cub);
                    TextView t4=(TextView)findViewById(R.id.text_busq);

                    t1.setText(getString(R.string.main_trad));
                    t2.setText(getString(R.string.main_rell));
                    t3.setText(getString(R.string.main_cub));
                    t4.setText(getString(R.string.main_busq));

                    ImageButton b= (ImageButton)findViewById(R.id.imageButton1);
                    b.startAnimation(buscarAnimation2);
                    b.setOnClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View v) {
                        }
                    });
                    ImageButton b2= (ImageButton)findViewById(R.id.ImageButton01);
                    b2.startAnimation(buscarAnimation3);
                    b2.setOnClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View v) {
                        }
                    });

                    ImageButton b3= (ImageButton)findViewById(R.id.ImageButton03);
                    b3.startAnimation(buscarAnimation2);
                    b3.setOnClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View v) {
                                    }
                    });


                    ImageButton b4= (ImageButton)findViewById(R.id.ImageButton02);
                    b4.startAnimation(buscarAnimation3);
                    b4.setOnClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View v) {
                                }
                    });
                }
            }); 
}

また、アプリを実行すると、アニメーションが表示されないことがあります。アニメーションが 4 秒続くと、黒のテーマが表示され、アニメーションの最後の 1 秒または最後の 2 秒が表示されます。読み込みに問題があるかどうかのようなものです...

では、これを回避するにはどうすればよいか、または何か間違ったことをしている可能性があります

コードを編集しました。

4

2 に答える 2

0

onResume代わりにアニメーションを開始するのはどうですか? その時点で、Activity が表示されている (そして実行されている) ことを確認できます。何かのようなもの:

private Animation buscarAnimation1 = null;
private Animation buscarAnimation2 = null;
private Animation buscarAnimation3 = null;
private Animation buscarAnimation4 = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // Other initialization code.

    buscarAnimation1 = AnimationUtils.loadAnimation(this, R.anim.boton1);
    buscarAnimation2 = AnimationUtils.loadAnimation(this, R.anim.boton2);
    buscarAnimation3 = AnimationUtils.loadAnimation(this, R.anim.boton2);
    buscarAnimation4 = AnimationUtils.loadAnimation(this, R.anim.boton1);
}

@Override
protected void onResume() {
    super.onResume();

    ImageButton b1= (ImageButton)findViewById(R.id.imageButton1);
    b1.startAnimation(buscarAnimation1);
    ImageButton b2= (ImageButton)findViewById(R.id.ImageButton01);
    b2.startAnimation(buscarAnimation2);
    ImageButton b3= (ImageButton)findViewById(R.id.ImageButton03);
    b3.startAnimation(buscarAnimation3);
    ImageButton b4= (ImageButton)findViewById(R.id.ImageButton02);
    b4.startAnimation(buscarAnimation4);
}
于 2012-09-30T18:02:10.487 に答える
0

ViewTreeObserverをレイアウトにアタッチし、そのonGlobalLayoutListener()メソッドをオーバーライドして、レイアウトが完全に描画されると呼び出されるアニメーションを呼び出します。

于 2012-09-30T18:08:22.480 に答える