camera.applyToCanvas(canvas)无效

原创 2015年07月08日 15:42:33

        在自定义view中用到了canera的3D效果,可是camera.applyToCanvas(canvas)在4.3以下的系统中不起作用。比较了下源码,查了一些资料发现了问题所在。

        在网上查到的资料说4.3以下如果启用了硬件加速渲染,则3D效果不起作用

public void applyToCanvas(Canvas canvas) {
        if (canvas.isHardwareAccelerated()) {
            if (mMatrix == null) mMatrix = new Matrix();
            getMatrix(mMatrix);
            canvas.concat(mMatrix);
        } else {
            nativeApplyToCanvas(canvas.getNativeCanvasWrapper());
        }
    }
上面为4.4源码

public void applyToCanvas(Canvas canvas) {
        nativeApplyToCanvas(canvas.mNativeCanvas);
    }
上面为4.1源码,4.2,4.3基本一致

通过比较源码可以看到4.4在硬件加速情况下camera.applyToCanvas(canvas)实现方式为

if (canvas.isHardwareAccelerated()) {
            if (mMatrix == null) mMatrix = new Matrix();
            getMatrix(mMatrix);
            canvas.concat(mMatrix);
        }
所以解决方法就是在4.3以下硬件加速的情况下使用canvas.concat(mMatrix);而不是camera.applyToCanvas(canvas)




android camera 3d特效 详解与进阶

1 概述本篇主要讲解camera,这里的camera并不是照相相关的类,而是android.graphics.Camera,这个类中封装了一个matrix,不熟悉的同学可以看前面的文章来了解。andr...

HTML5-canvas擦除无效

HTML5-canvas擦除无效 部分安卓手机上会出现canvas内图表重叠,并且清除无效,属于偶现缺陷,非常难以确定其产生原因,比如下图这个样子,第一次绘制的图形没有擦除,导致第二次绘制时出现重影:...
  • yuhk231
  • yuhk231
  • 2017年01月12日 11:51
  • 1653

Unity的优化系列4 - 最好使用Canvas Overlay代替Screen Space Camera

孙广东  2016.5.23

Android开发:canvas.drawTextOnPath()无效----Android4.03的又一个bug!!!!(关于Canvas绘制的方方面面)

为了实现在透明圆环上绘制字体,查到是用canvas.drawTextOnPath()这个函数。但遗憾的是,我在手机上死活都画不出来字体。用canvas.drawPath()正常,说明path是正确的,...

将图像无效值设置为NAN

  • 2015年10月14日 10:57
  • 2KB
  • 下载

解决C# 绑定句柄无效错误.doc

  • 2013年06月07日 10:31
  • 102KB
  • 下载

Qt中Debug设置断点无效

今天刚装好了QT,我迫不亟待的先打开一个例子工程,编译(QT里面好像是叫构建),运行,嘿,效果出来了。 然后我想调试一下程序,就在源代码中打了几个断点(QT中打断点和VS2012是一样的...

设置窗体关闭按钮无效

  • 2013年03月06日 19:48
  • 530B
  • 下载

隐藏Console窗口无效(续1)代码

  • 2014年10月20日 23:16
  • 9.62MB
  • 下载

解决WCF 调用方未由服务器进行身份验证或消息包含无效或过期的安全上下文令牌

错误描述: 1. WCF:调用方未由服务器进行身份验证 2. 无法处理消息。这很可能是因为操作“http://tempuri.org/ISCCLSvc/GetCarriersByWareHouse...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:camera.applyToCanvas(canvas)无效
举报原因:
原因补充:

(最多只允许输入30个字)