android.graphics.图片无法在API 14+中绘制



当我将清单中的targetAPI从13更改为14(或更高)时,图片不再工作。无论如何。

例子
    Paint bluepaint = new Paint();
    bluepaint.setColor(Color.BLUE);
    Picture pic = new Picture();
        Canvas testcanvas = pic.beginRecording(300, 300);
        testcanvas.drawColor(Color.BLUE);
    pic.endRecording();
    canvas.drawColor(Color.RED);
    canvas.drawLine(0, 0, 480, 480, bluepaint);
    canvas.drawPicture(pic);

这应该从pic中绘制一个蓝屏,它在API 13和更低的版本中这样做。它不会从纯画布上画出蓝色,只画出红色。画的电话。

我看不出API 13到14有什么变化。

然而,我在Galaxy S2上使用cyanogenmod(所以我可以运行4.3),不确定他们是否改变了cyanogen上的原生东西,几周前切换到它。

知道在哪里寻找答案或者是什么原因导致的吗?

编辑

工作
<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="13" />

NOT working

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="14" />

如果targetSdkVersion为14 (Ice Cream Sandwich)或更高,则整个应用默认启用硬件加速。不幸的是,如果启用硬件加速,则不支持Canvas.drawPicture()

有两种方法可以解决这个问题:

  1. android:hardwareAccelerated="false"添加到您的AndroidManifest.xml中的application标签。这将禁用整个应用的硬件加速。

  2. 您可以使用BitmapCanvas.drawBitmap(),这是支持硬件加速的

参考:http://developer.android.com/guide/topics/graphics/hardware-accel.html

使用这些依赖…这里26.0.2是一个错误,版本14是不支持的。给这些依赖:-

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:design:27.1.1'
    compile 'com.android.support:support-v4:27.1.1'

和Make SDK版本:-

* *

android {
    compileSdkVersion 27  
    defaultConfig {
        applicationId "com.example.yeshveer.mygraphics"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"}
* *

但是你可以尝试一次不改变SDK版本的依赖。

and Remember canvas.restore();不要使用

最新更新