我有一个从ImageView扩展的类(我们称之为' surface ')。在onDraw方法上,在画布上绘制了一个小点。当我点击一个按钮时,我尝试将此点移动到另一个位置。您可以考虑翻译动画的手动版本。它有效但现在我试图找出这种移动的速度。我的意思是我希望点移动更快。
surface 的相关部分:
private float actual_x=100,actual_y=100; // Dot is drawn on 100,100 at beginning
private float increase_x,increase_y;
private boolean isMovingResume=false;
private int moving_counter;
public void changeLocation(float x,float y){
isMovingResume=true;
moving_counter=0;
increase_x=(x-actual_x)/50;
increase_y=(y-actual_y)/50;
invalidate(); // This trigger onDraw method
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(actual_x,actual_y,15,fill_paint);
if(isMovingResume){
actual_x=actual_x+increase_x;
actual_y=actual_y+increase_y;
if(moving_counter==49){ // Moving will end after 50 redraw
isMovingResume=false;
}
else{
moving_counter++;
}
invalidate(); //redraw
}
}
点击我的按钮:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
surface.changeLocation(200,200);
}
});
就像我说的那样,但是我希望它更快。例如,在这种情况下,移动时间是2秒,我怎么能让它0.5秒? 感谢所有回复。
答案 0 :(得分:0)
您需要切换到surfaceview甚至更快的纹理视图,两者都使用画布,并且具有更好的性能。 Textureview特别是因为它是硬件加速的,我也觉得它比surfaceview更好。那甚至考虑去GLSurfaceView。
您可以看到surfaceview和textureview的一些示例代码:Here