【发布时间】:2016-05-08 09:47:45
【问题描述】:
这是我目前在 MainActivity.java 中的内容。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyBall ball = new MyBall(this);
setContentView(ball);
}
}
这是我的画布类
public class MyBall extends View {
Bitmap myBall;
int gap = 10;
String direction = "down";
float xPos = 0;
float yPos = 0;
public MyBall(Context context) {
super(context);
myBall = BitmapFactory.decodeResource(getResources(), R.drawable.ball3);
}
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(myBall, xPos, yPos, null);
invalidate();
}
}
我想要从左上角,到右中,左中,右下,然后循环回来。当我将方向更改为横向时,我也遇到了问题,因为画布的宽度发生了变化,之后一切都被破坏了。
[编辑]
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
if(direction.equals("down"))
{
if(yPos < canvas.getHeight()/2 - myBall.getWidth()){
xPos+=gap;
yPos+=gap;
}
else {
direction = "up";
Log.d("direction", xPos + "help");
}
}
if(direction.equals("up")){
if (xPos > myBall.getWidth()) {
xPos-=gap;
yPos+=gap;
}
}
canvas.drawBitmap(myBall, xPos, yPos, null);
invalidate();
}
这是我卡住的地方。球向左中间移动,但当方向变为横向时,球向下而不向上。
【问题讨论】:
-
不要在
onDraw()中调用invalidate。为您的动画帧使用其他来源。 -
@tynn 你到底是什么意思?我是新手,所以我使用了 invalidate 以便再次调用 ondraw 方法,以便更新图像。
-
这就是我的意思。不要在
onDraw()中这样做。使用计时器或类似的东西进行更新。或者看看View Animation
标签: android bitmap android-canvas drawable