
在ondraw方法中,通过canvas来绘制想要的样式,首先需要定义好画笔,以及画笔的各种属性,比如需要的时候要
抗锯齿
等等。都准备好了就可以用canvas来实现绘图了,当然api提供的api肯定是不够用的,需要多姿多彩的样式很多时候需要借助准备好的一些图片,通过canvas绘制bitmap来实现把准备好的图片绘制上去。绘制好了当然还是不够的,控件都是需要和用户交互的,所以很多时候样式是会发生改变的,所以要在其中定义相关方法暴露出来,方法中处理用户 *** 作或其他的结果改变样式的重绘,绘制好了调用更新(
invalidate
())方法,实现样式的改变。做好一个控件还需要优化性能等等,都需要一步一慢慢实现。
现在我碰到个项目,要动态的添加Button(个数不定),所以想利用Button.onDraw(canvas)这个方法将new出来的Button绘制到SurfaceView里的Canvas上。但是试过几次,总不能成功(屏幕上无任何显示)。特来请教。目前代码如下:
Button b=new Button(context)
b.setText("Text")
b.draw(canvas)
1.因为需求所定,肯定是不能用XML来添加Button的
2.也试过通过ScrollView里通过addView方法添加,但是也满足不了要求
b.setText("Text")
b.draw(canvas)
1. 你先试下在 lineLayout上加button试试
但是你说的方法就是我PS的第2项里说的,通过addView的方式添加的,这样会导致Button和Canvas在2个不同的层管理器里,所以也是不行的。 问题补充:我昨天晚上在代码里加入了
layout(l, t, r, b)
这个方法后,Button是能绘制到Canvas上了,但是新的问题有来了
这样绘制出来后,Button好像完全变成静态的“图片”了,设置了onTouchListenter也无法监听事件,而且按下这个“按钮”后,按钮的外观也没改变。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)