Android Canvas.drawPicture 不适用于带有 Ice Cream Sandwich 的设备

标签 android canvas android-4.0-ice-cream-sandwich hardware-acceleration

我想画一个PictureCanvas 上通过

mCanvas.drawpicture(mPicture, mRect)

使用目标 API 7 <uses-sdk android:minSdkVersion="7"/> ,它在 API<14 的设备中完美运行,但在带有 Ice Cream Sandwich 的设备中,它不起作用。显然这是因为硬件加速不支持 canvas.drawPicture:Unsupported Drawing Operations 我试图通过在 list 中禁用硬件加速来解决这个问题:

<application android:hardwareAccelerated="false" ...>

但还是不行。

最佳答案

我遇到了同样的问题,通过仅在将绘制 Picture 的 View 上以编程方式关闭硬件加速来解决

view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

但是setLayerType仅自 API 11 起受支持。因此请改用此方法:

public static void setHardwareAccelerated(View view, boolean enabled){
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
        if(enabled)
            view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
        else view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    }
}

关于Android Canvas.drawPicture 不适用于带有 Ice Cream Sandwich 的设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10384613/

相关文章:

android - 以良好的方式显示 WebView fragment 中的进度

android - 三星 Nexus Prime 和读取 RFID 员工 ID

android - SearchView展开抛出空指针异常

Android.mk,包含所有 cpp 文件

wpf在调整 Canvas 父级时拉伸(stretch)一条线

javascript - 在 Canvas 中找到圆弧中心

javascript - 在 React 中使用 onChange 设置状态导致 Canvas 为空

java - 如何从 Android GridView onItemClick 添加新 Activity ?

javascript - 离线 Android GIS App 开发

android - 可选对话框