如何使用timertask顺利移动?

时间:2011-11-15 11:11:11

标签: android android-animation

我使用下面的代码来移动图像,但工作正常,但移动图像时不能顺利移动。任何人都可以在我的代码中找到问题吗?

 handler = new Handler(); 
    t = new Timer(); 
    t.scheduleAtFixedRate(new TimerTask() { 
            public void run() { 
                    handler.post(new Runnable() { 
                            public void run() { 

                                if(left<=400){

                                 left=left+1;

                                     RelativeLayout.LayoutParams rp = new RelativeLayout.LayoutParams(
                                                new ViewGroup.MarginLayoutParams(
                                                        RelativeLayout.LayoutParams.WRAP_CONTENT,
                                                        RelativeLayout.LayoutParams.WRAP_CONTENT));
                                                 rp.setMargins(left, top, 0, 0);
                                                 Train.setLayoutParams(rp);

                                }else{
                                    Toast.makeText(getApplicationContext(), "Toast completed", Toast.LENGTH_SHORT).show();
                                t.cancel();
                                }

                            } 
                    }); 

            } 

    }, 0,30); 

2 个答案:

答案 0 :(得分:4)

TimerTask和Threads不是一致的UI更改的好选择。

  1. 通过进入SurfaceView创建CustomView。

  2. 管理视图位置的一些类变量。

  3. 在onDraw()中创建视图并更新下一个定位的变量。

  4. 无论何时想要手动刷新,都要调用invalidate。

  5. Follow this tutorial获得更多帮助。

答案 1 :(得分:0)

ImageView img_animation = (ImageView) findViewById(R.id.imageView1);

    TranslateAnimation animation = new TranslateAnimation(0.0f, 400.0f,0.0f, 0.0f);          //  new TranslateAnimation(xFrom,xTo, yFrom,yTo)
    animation.setDuration(5000);  // animation duration 
    animation.setRepeatCount(5);  // animation repeat count
    animation.setRepeatMode(2);   // repeat animation (left to right, right to left )
    //animation.setFillAfter(true);      

    img_animation.startAnimation(animation); 

动画是最顺畅的动人!!试试!!