当我将清单中的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()
。
有两种方法可以解决这个问题:
-
将
android:hardwareAccelerated="false"
添加到您的AndroidManifest.xml中的application
标签。这将禁用整个应用的硬件加速。 -
您可以使用
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'
和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();不要使用