我知道可以在自定义的View类上画,但我现在是在资源文件中的View上画,如何实现呢?
就是如何让View使用到定义的Canvas
就是如何让View使用到定义的Canvas
解决方案 »
- 学安卓看那本书比较好
- 问一个:android源代码,如何切换版本。
- 如何制作安卓软件 用什么语言 和什么工具
- Android Browser 不能下载 mimetype类型为 application/vnd.oma.drm.rights+xml的文件
- android am命令使用
- android屏幕去掉工具栏和标题栏后,其余控件位置被改变了~~~怎么办。。
- 导apidemo的时候为什么工程 报红叉。
- 拍照后在ListView中显示,程序crash
- Sorry!the application activity(process com.activity)has stopped unexpectedly.ple
- 自定义 适配器实现 GridView
- android中同一个activity中设置两个button怎么区别?
- 求救啊,这个数据类型怎么回事啊
然后在activity里头用findViewById获取到这个view实例。
获取之后可以调用View种的一些方法去画。
但是如何把canvas画到view中呢
有个draw(canvas)方法,可是不管用啊
话说你去打开reference,看看view类的一个回调函数onDraw(canvas):Called when the view should render its content.
它传递了一个canvas作为参数,如果你想要在第一次载入这个view的时候在这个view种绘图,那就一定需要去实现onDraw(canvas)这个函数,然后在这个函数中利用传递进来的canvas进行绘图(具体怎么绘图去看看canvas的reference)。
也就是说,你可以在你自己定义的这个view类中添加一个canvas类型的成员变量。然后为这个变量添加存取器,通过getCanvas的方法获得这个类的canvas对象。
但是要主意的是!如果通过canvas对象操作图像,图像只有在用户可视范围内的内容发生改变的时候重新绘图,否则你需要在每次绘图之后调用view.postInvalidate();(主意是view对象不是canvas对象)
不知道我说明白没有⋯⋯
唉最近发现有点儿不会说话了⋯⋯经常词不达意神马的⋯⋯话说我小学期在写一个项目,里头涉及了有关view重绘的内容,如果需要我可以把代码发给你⋯⋯
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="2px"
android:background="#000000"
/>
以下是示例图: