2016-05-17 56 views
0

我想在每次有人触摸屏幕时创建一个球,但我似乎无法让它工作。我希望它在某个位置创建并产生一个球。有一个if语句,用于查看屏幕上是否出现轻击,并在if语句中调用绘制,以便在窗口中绘制一个圆。为什么不通过draw()命令画我的圈子

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

我猜测这可能是因为你在Draw()之后的if语句中没有返回true。 –

+0

我做到了,但它似乎没有做任何我能看到的东西。 –

回答

1

您需要使用OnDraw()函数。这是什么在绘制东西时更新画布。

+0

我该怎么做,我是新开发的android,不知道该怎么做,或者你的意思是什么。 –

+0

有一个OnDraw方法,实现它,即编写你的代码。这个OnDraw方法在你的画布上绘制所有东西。如果你把你的代码放在任何其他函数中,操作系统将不知道该画什么,所以他们已经给出了OnDraw方法 – Yashodhan

+0

我做了我认为你让我做的事情,但它仍然无效,我已经取代了我的旧代码与上面的一个。 –

1

绘制到画布只能在View对象内完成,而不是像您在示例中那样的活动。你可以创建自己的自定义视图这样的事情 -

​​

以XML布局利用这一点,你需要做到这一点,在更换包名(可能com.yourcompany.yourapp)。

<com.yourcompany.yourapp.CustomView 
    android:layout_width="64dp" 
    android:layout_height="64dp"/> 

您可以通过执行

View circle = new CustomView(getContext()); 

然后,您可以添加到您的布局在代码中创建一个新的观点。

+0

但是如果我这样做,它会在我用过的活动中产生球吗? –