For Loop is Iterating Once of i = lastSize

时间:2017-01-20 06:12:05

标签: android multithreading for-loop animation delay

我在Android编程方面经验不足,所以我遇到了一个问题,我想要动画直到arraySize()。但循环只迭代一次。实际上我需要应用程序动画,其中每个应用程序在随意延迟时间后开始动画。为了更好地理解,我在这里发布我的详细代码。  我已经解决了这个问题2天以来找不到任何解决方案所以我决定在这里发帖。

  @Override
            public void onAnimationEnd(Animation animation) {


                Animation cout = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.optimization);
                fan_bg.setAnimation(cout);
                animateprogress(mHoloCircularProgressBar);//b8=b7+1;

                int remainder = ramOptimizeArrayList.size() / 8;

                int b = 0;
                for ( int i=0;i<= remainder;i++) {

                    b = b + 1;
                    top.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());
                    b = b + 1;
                    top_left.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());
                    b = b + 1;
                    top_right.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());
                    b = b + 1;
                    left.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());
                    b = b + 1;
                    right.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());
                    b = b + 1;
                    bottom.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());
                    b = b + 1;
                    bottom_left.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());
                    b = b + 1;
                    bottom_right.setImageDrawable(ramOptimizeArrayList.get(b).getIconlink2());

                    Runnable runnable = new Runnable() {
                        @Override
                        public void run() {

                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    top_right.startAnimation(top_left_anim);
                                }
                            });

                        }
                    };

                    Handler handler1 = new Handler();
                    handler1.postDelayed(runnable, 100);

                    Runnable runnable2 = new Runnable() {
                        @Override
                        public void run() {

                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    top.startAnimation(top_anim);
                                }
                            });

                        }
                    };

                    Handler handler3 = new Handler();
                    handler3.postDelayed(runnable2, 50);

                    Runnable runnable4 = new Runnable() {
                        @Override
                        public void run() {

                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    top_left.startAnimation(top_right_anim);
                                }
                            });

                        }
                    };

                    Handler handler4 = new Handler();
                    handler4.postDelayed(runnable4, 200);


                    Runnable runnable5 = new Runnable() {
                        @Override
                        public void run() {

                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    left.startAnimation(left_anim);
                                }
                            });

                        }
                    };

                    Handler handler5 = new Handler();
                    handler5.postDelayed(runnable5, 500);


                    Runnable runnable6 = new Runnable() {
                        @Override
                        public void run() {

                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    right.startAnimation(right_anim);
                                }
                            });

                        }
                    };

                    Handler handler6 = new Handler();
                    handler6.postDelayed(runnable6, 300);

                    Runnable runnable7 = new Runnable() {
                        @Override
                        public void run() {

                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    bottom_left.startAnimation(bottom_left_anim);
                                }
                            });

                        }
                    };

                    Handler handler7 = new Handler();
                    handler7.postDelayed(runnable7, 600);

                    Runnable runnable8 = new Runnable() {
                        @Override
                        public void run() {

                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    bottom.startAnimation(bottom_anim);
                                }
                            });

                        }
                    };

                    Handler handler8 = new Handler();
                    handler8.postDelayed(runnable8, 350);

                    Runnable runnable9 = new Runnable() {
                        @Override
                        public void run() {

                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    bottom_right.startAnimation(bottom_right_anim);
                                }
                            });

                        }
                    };

                    Handler handler9 = new Handler();
                    handler9.postDelayed(runnable9, 650);
                }
            /*top.startAnimation(top_anim);
            top_left.startAnimation(top_right_anim);
            left.startAnimation(left_anim);
            right.startAnimation(right_anim);
            bottom_left.startAnimation(bottom_left_anim);
            bottom.startAnimation(bottom_anim);
            bottom_right.startAnimation(bottom_right_anim);*/
                }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });

1 个答案:

答案 0 :(得分:0)

如果您想要iteratearray size,为什么要在loop中使用余数。您已将余数值设置为:

int remainder = ramOptimizeArrayList.size() / 8;

由于remainder为int,如果array size13remainder = 13/8,结果为1,因为remainderinteger

将for循环写为:

for ( int i=0;i<= ramOptimizeArrayList.size();i++) {
//rest of your code
}