2012-07-04 152 views
0

开始学习画布并且到目前为止有两个类(主要用于调用视图和视图) View类onDraw创建一个目标(即每个目标的数目颜色不同)绘制用户在画布上触摸过的圆圈

我有一个ontouch listenerer设置为记录x和y的用户点击其中

我的麻烦则绘制新的圆圈/点出了用户触摸更新,类

主类

public class StartScreen extends Activity { 

    DrawView drawView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     drawView = new DrawView(this); 
     drawView.setBackgroundColor(Color.WHITE); 
     setContentView(drawView); 
} 

绘图类

public class DrawView extends View implements View.OnTouchListener { 

    private Paint paint[]; 

    private Context context; 
    private Canvas canvas; 

    //definging some variables 

    public DrawView(Context pContext) { 
     super(pContext); 
     this.context = pContext; 

     WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
     Display display = wm.getDefaultDisplay(); 

     paint = new Paint[5]; 
     setupColours(); 

    // setting varibale like raduis etc 



    } 

    private void setupColours() { 

     // Creating Arrray of Paint Colours 

    } 

    @Override 
    public void onDraw(Canvas pCanvas) { 

     canvas = pCanvas; 

     newRadius = radius; 

     for (int i = 0; i < rings; i++) { 


      if (i == 3) { 
       canvas.drawCircle(centreWidth, centreHeight, newRadius, paint[0]); 
      } else { 
       canvas.drawCircle(centreWidth, centreHeight, newRadius, paint[1]); 
      } 


      canvas.drawCircle(centreWidth, centreHeight, newRadius - targetBoundary, paint[i/2]); 

      newRadius = newRadius - ringOffset; 

     } 

     this.setOnTouchListener(this); 

    } 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     Log.d("TAG2", "x: " + event.getX() + " y: " + event.getY()); 
     drawHit(event.getX(), event.getY()); 
     return true; 
    } 

    public void drawHit(float hitX, float hitY) { 
     Log.d("HIT", "Hit being drawn"); 

     Paint paint2 = new Paint(); 
     paint2.setColor(Color.BLACK); 

     canvas.drawCircle(hitX, hitY, 100, paint2); 

    } 

的方法被称为但圆未被绘制。我究竟做错了什么。谢谢

+0

已更新类 –

+0

[Draw Circle on touch](http://stackoverflow.com/questions/11796357/draw-circle-on-touch) – bummi

回答

2

您提供的问题信息很少。一点阐述不会有什么伤害。目标(圈子)是否按照您希望的那样创建?如果是,那么暂停FrameLayout并使用'addView'方法将你的球覆盖到主视图上。

稍微老了,但尽管如此,这可能是对你有用的教程: http://www.kellbot.com/2009/06/android-hello-circle/

好运

+0

已更新类 –

+0

在我看来,您正在尝试在画布上呈现同心圆。您是否遇到渲染单个圆的问题,或者将问题扩展到多个圆时出现问题? –

+0

圆圈工作正常,当我尝试添加用户触摸的小圆圈不起作用 –