android:如何用canvas在自定义view里画图

android:如何用canvas在自定义view里画图,第1张

做安卓开发的话,不会自定义view是不行的,自定定义各种控件以满足开发需求,在开发中是很重要的,自定义view通过继承view,通过重写ondraw方法实现重绘自己所需要的控件样式

在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也无法监听事件,而且按下这个“按钮”后,按钮的外观也没改变。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7942562.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存