我想在每次有人触摸屏幕时创建一个球,但我似乎无法让它工作。我希望它在某个位置创建并产生一个球。有一个if语句可以看到屏幕上是否有点击,而在if语句中它会调用下面的绘图来在窗口中绘制一个圆圈。
package com.example.madusha.gravityball;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
public class GameWindow extends Activity {
private Paint paint;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game_window);
Button pause = (Button) findViewById(R.id.pausebutton);
pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view){
Intent intent = new Intent(GameWindow.this, PauseMenu.class);
startActivity(intent);
}
});
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
int Action = event.getAction();
if(Action == KeyEvent.ACTION_DOWN){
onDraw();
System.out.println("Works???");
return true;
}
return super.onKeyDown(keyCode,event);
}
public void init() {
paint = new Paint();
paint.setColor(Color.BLUE);
}
Canvas canvas;
public void onDraw(){
init();
int height = 100;
int width = 100;
canvas.drawCircle(width, height,100,paint);
}
}
答案 0 :(得分:1)
您需要使用OnDraw()函数。这就是在绘制内容时更新画布的原因。
答案 1 :(得分:1)
绘制到画布只能在View
对象内完成,而不能像示例中的那样进行。您可以创建自己的自定义视图 -
public class CustomView extends View {
private Paint paint;
public CompletionSliderView(Context context) {
super(context);
init();
}
private void init() {
paint = new Paint();
paint.setColor(Color.BLUE);
}
@Override
protected void onDraw(Canvas canvas) {
int height = getMeasuredHeight();
int width = getMeasuredWidth();
canvas.drawCircle(width/2, height/2, height/2, paint);
}
}
要在xml布局中使用它,您需要执行此操作,替换包名称(可能是com.yourcompany.yourapp
)。
<com.yourcompany.yourapp.CustomView
android:layout_width="64dp"
android:layout_height="64dp"/>
您可以通过执行
在代码中创建新视图View circle = new CustomView(getContext());
然后您可以将其添加到您的布局中。