簡體   English   中英

如何從左到右為Android一一制作圖像

[英]How to animate images one by one from left to right android

我想從左到右一幅動畫處理9張圖像。 我嘗試編碼,所有圖像同時移動。 我需要將每個圖像一一移動。

公共類MainActivity擴展了Activity {

ArrayList<ImageView> imageHolder;

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    animateBottles();
}

private void animateBottles() {
    ImageView upperRowBottleOneImageView = (ImageView) findViewById(R.id.upperRowBottleOneImageView);
    ImageView upperRowBottleTwoImageView = (ImageView) findViewById(R.id.upperRowBottleTwoImageView);
    ImageView upperRowBottleThreeImageView = (ImageView) findViewById(R.id.upperRowBottleThreeImageView);
    ImageView upperRowBottleFourImageView = (ImageView) findViewById(R.id.upperRowBottleFourImageView);
    ImageView upperRowBottleFiveImageView = (ImageView) findViewById(R.id.upperRowBottleFiveImageView);
    ImageView upperRowBottleSixImageView = (ImageView) findViewById(R.id.upperRowBottleSixImageView);
    ImageView upperRowBottleSevenImageView = (ImageView) findViewById(R.id.upperRowBottleSevenImageView);
    ImageView upperRowBottleEightImageView = (ImageView) findViewById(R.id.upperRowBottleEightImageView);
    ImageView upperRowBottleNineImageView = (ImageView) findViewById(R.id.upperRowBottleNineImageView);

    imageHolder = new ArrayList<ImageView>();

    imageHolder.add(upperRowBottleOneImageView);
    imageHolder.add(upperRowBottleTwoImageView);
    imageHolder.add(upperRowBottleThreeImageView);
    imageHolder.add(upperRowBottleFourImageView);
    imageHolder.add(upperRowBottleFiveImageView);
    imageHolder.add(upperRowBottleSixImageView);
    imageHolder.add(upperRowBottleSevenImageView);
    imageHolder.add(upperRowBottleEightImageView);
    imageHolder.add(upperRowBottleNineImageView);

    for (int i = 0; i < imageHolder.size(); i++) {
        ImageView imageView = imageHolder.get(i);

        ObjectAnimator mover = ObjectAnimator.ofFloat(imageView,
                "translationX", -150f, 50f);
        mover.setDuration(4000);

        AnimatorSet animatorSet = new AnimatorSet();
        animatorSet.play(mover);
        animatorSet.start();
        mover.addListener(new AnimatorListener() {

            @Override
            public void onAnimationCancel(Animator arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationEnd(Animator arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationRepeat(Animator arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationStart(Animator arg0) {
                // TODO Auto-generated method stub

            }

        });}

        //try {
            //Thread.sleep(1000);
        //} catch (InterruptedException e) {
        //  // TODO Auto-generated catch block
            //e.printStackTrace();
        //}
    //}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

為了使圖像一個動畫,您必須為每個圖像設置一個“開始偏移延遲”,例如:

for (int i = 0; i < imageHolder.size(); i++) {
        ImageView imageView = imageHolder.get(i);

        TranslateAnimation animation = new TranslateAnimation(fromX, ToX, FromY, ToY);
        animation.setDuration(400);
        animation.setStartOffset(100*i);

        imageView.startAnimation(animation);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM