android中surfaceview画布中颜色控制,在Android中设置SurfaceView的背景颜色

我正在为android构建一个paint应用程序.扩展随SDK提供的FingerPaint应用程序示例.但是,与FingerPaint不同,我使用SurfaceView和单独的渲染线程来绘制表面.所有这些都非常标准和直接.运作良好.但是,我希望在绘画表面上给出白色背景,这就像在白纸上画画一样.默认背景为黑色.我的表面视图的线程调用视图的onDraw()方法.

我在这里面临的问题是,如果我将背景颜色或背景资源设置为SurfaceView,则在下次渲染视图时,此背景将覆盖曲面的上一个绘图.我将用一个例子来解释这个:

假设我将背景设置为白色.现在,应用程序启动,我的SurfaceView具有白色.好的,到目前为止还不错.现在,我用手指在这个表面上画了一条红色的线条.该线现在显示在白色表面上.好.现在,这应该是一个绘画应用程序,并假设我想画一辆车.那么,我用手指画出第二条红线.第二行画在屏幕上,但我之前绘制的第一行消失了.也就是说,因为我已经为SurfaceView设置了一些背景,所以再次绘制背景,从而覆盖绘制的第一行.现在屏幕仅显示绘制的第2行.

显然,我不希望这种情况发生.当我不尝试改变背景时(即,在默认的黑色背景上显示两条线,没有有效的背景),代码完美地工作.但是当我设置一些理想的背景时,就会发生这种情况.有没有办法以某种方式拥有静态背景,每次都不会绘制?我希望背景只绘制一次,所有后续绘图都应该在这个背景上进行.我不希望android运行时,每次绘制我的视图时绘制背景,从而覆盖之前渲染中该视图上的所有绘图.有办法解决这个问题吗?

我尝试过的事情是:

使用android:background在XML中设置SurfaceView的背景颜色.

做到这一点,使用风格的概念.(指定样式值并在布局文件中引用它).样式只将背景颜色定义为#FFFFFFFF(白色).

将样式2设置为SurfaceView的父视图(RelativeLayout).

将样式2设置为整个应用程序,作为主题,在我的清单文件中使用android:theme.

将SurfaceView的背景可绘制设置为纯白色图像.

从代码中调用我的SurfaceView的setBackgroundColor,this.setBackgroundColor(Color.WHITE).

谢谢.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值