
我在主活动中创建了一个名为DrawVIEw的自定义视图.我已经在DrawVIEw类中实现了onDraw()方法,它最初绘制了一个圆.然后,我添加了一个触摸侦听器,以便用户单击时可以绘制一个正方形.我要负责用户单击并绘制正方形的部分.我不确定如何去做.
public class TestActivity extends Activity { DrawVIEw drawing; /** Called when the activity is first created. */ @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); VIEwGroup myLayout = (VIEwGroup) findVIEwByID(R.ID.mainLayout); drawing = new DrawVIEw(this); myLayout.addVIEw(drawing); drawing.setontouchListener(new VIEw.OntouchListener() { public boolean ontouch(VIEw v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { // draw a square } return true; } }); } private class DrawVIEw extends VIEw { public DrawVIEw(Context context) { super(context); } protected voID onDraw(Canvas canvas) { Paint myPaint = new Paint(); myPaint.setcolor(color.BLACK); // draw a circle } }}帮助将不胜感激.
解决方法:
这是在用户向下,向上和向上移动触摸侦听器时绘制矩形的简单片段,只需在DrawVIEw类中重写即可,而不是通过setontouchListener()
在DrawVIEw类中定义Rect r = new Rect()然后在DrawVIEw类中实现此代码后
public boolean ontouch(VIEw v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { sx = event.getX(); sy = event.getY(); r.set(sx,sy,sx,sy); }else if(event.getAction==MotionEvent.ACTION_UP){ r.set(sx,sy,event.getX(),event.getY()); }else if(event.getAction==MotionEvent.ACTION_MOVE){ r.set(sx,sy,event.getX(),event.getY()); } invalIDate(); return true;}
这是onDraw()
public voID onDraw(Canvas canvas){ super.onDraw(canvas); canvas.drawRect(r, new Paint());} 总结 以上是内存溢出为你收集整理的Android,来自主要活动全部内容,希望文章能够帮你解决Android,来自主要活动所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)