我使用下面的代码来移动图像,但工作正常,但移动图像时不能顺利移动。任何人都可以在我的代码中找到问题吗?
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);
答案 0 :(得分:4)
TimerTask和Threads不是一致的UI更改的好选择。
通过进入SurfaceView创建CustomView。
管理视图位置的一些类变量。
在onDraw()中创建视图并更新下一个定位的变量。
无论何时想要手动刷新,都要调用invalidate。
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);
动画是最顺畅的动人!!试试!!