андроид.графика.Изображение не рисуется в 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 ответа:
Если
targetSdkVersion
равно 14 (Ice Cream Sandwich) или выше, то аппаратное ускорение включено по умолчанию для всего приложения. К сожалению,Canvas.drawPicture()
не поддерживается, если включено аппаратное ускорение .Есть два способа исправить это:
Добавьте
android:hardwareAccelerated="false"
к тегуapplication
в вашем AndroidManifest.XML. Это отключит аппаратное ускорение для всего вашего приложения.Вы можете использовать
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