0

私は次の問題を抱えています: Android アプリに、画面で UI 要素を移動するアニメーションがあります。つまり、これは翻訳アニメーションであり、通常は正常に動作します。画面内の位置 (0,0) から (0, 200) に移動しているとします。問題は、これが非常に速く (0.001 秒など) 発生することがあり、プログラムがロードされるとすぐに、オブジェクトの動きは見えませんが、オブジェクトが最終位置 (0,200) にあることがわかります。これが私のコードです:

Handler handler = new Handler();

float height;
private RelativeLayout relativeLayoutDoughnutAndLogoTogether;
private RelativeLayout logo_donut_together2;
private ImageView imgSplash, image2;
private DoughnutView doughnutView;

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    relativeLayoutDoughnutAndLogoTogether = (RelativeLayout) findViewById(R.id.logo_donut_together);
    logo_donut_together2 = (RelativeLayout) findViewById(R.id.logo_donut_together2);
    imgSplash = (ImageView) findViewById(R.id.turkcell_logo);
    image2 = (ImageView) findViewById(R.id.ImageView02);

    int logoHeight = imgSplash.getDrawable().getIntrinsicHeight();
    int screenHeight = getWindowManager().getDefaultDisplay().getHeight();
    final int centerScreen = (screenHeight-logoHeight)/2;

    doughnutView = new DoughnutView(this) {
        @Override
        public void onAnimationComplete() {
                float density = getResources().getDisplayMetrics().density;
                Animation moveToTop = new TranslateAnimation(0, 0, centerScreen-50*density, 0);
                moveToTop.setDuration(1000);                        
                relativeLayoutDoughnutAndLogoTogether.startAnimation(moveToTop);                    

                logo_donut_together2.setVisibility(View.GONE);
                logo_donut_together2.removeView(doughnutView);
                relativeLayoutDoughnutAndLogoTogether.addView(doughnutView);                            
                relativeLayoutDoughnutAndLogoTogether.setVisibility(0);
        }
    };


    doughnutView.setStartAngle(0);
    doughnutView.setColorFront(Color.rgb(232, 232, 232));
    doughnutView.setSweepAngle(360);
    doughnutView.setStrokeWidth(4);
    doughnutView.setMarginAll(10);
    doughnutView.setColorBack(Color.rgb(63, 176, 232));
    doughnutView.startAnimation(0);
    logo_donut_together2.addView(doughnutView);

}

私は実際にコードの onAnimationComplete 部分について話しています。誰か助けていただければ幸いです。

ありがとう

4

1 に答える 1

0

onAnimatinEnd(Animation animation){...} にロジックを記述する必要があります。これが役立つ場合があります...

relativeLayoutDoughnutAndLogoTogether.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
            logo_donut_together2.setVisibility(View.GONE);
            logo_donut_together2.removeView(doughnutView);
            relativeLayoutDoughnutAndLogoTogether.addView(doughnutView);                            
            relativeLayoutDoughnutAndLogoTogether.setVisibility(0);

            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
于 2013-08-20T07:32:54.183 に答える