андроид.графика.Изображение не рисуется в 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);

Это должно нарисовать синий экран с рисунком, он делает это в API 13 и ниже. Он рисует не синий, а только красный цвет с чистого холста.вызов рисования.

Я не вижу никаких изменений от API 13 до 14, которые могли бы объяснить это.

Однако я использую cyanogenmod на Galaxy S2 (поэтому я могу запустить 4.3), не уверен, что они изменятся родной материал на цианогене, перешел на него пару недель назад.

Есть идеи, где искать ответы или что может вызвать это ?

Edit

Работа

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

Не работает

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

2 ответа:

Если targetSdkVersion равно 14 (Ice Cream Sandwich) или выше, то аппаратное ускорение включено по умолчанию для всего приложения. К сожалению, Canvas.drawPicture() не поддерживается, если включено аппаратное ускорение .

Есть два способа исправить это:

  1. Добавьте android:hardwareAccelerated="false" к тегу application в вашем AndroidManifest.XML. Это отключит аппаратное ускорение для всего вашего приложения.

  2. Вы можете использовать Bitmap и Canvas.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'

И сделать версию SDK: -

**

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

**

Но вы можете попробовать один раз с зависимостью без изменения версии SDK.

И запомните холст.restore (); dont use