当我将清单中的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和更低版本中这样做。 它不会绘制蓝色,只会绘制纯canvas.draw调用中的红色。
我无法看到API 13到14的任何变化可以解释这一点。
然而,我在Galaxy S2上使用cyanogenmod(所以我可以运行4.3),不确定它们是否会改变氰基上的原生物质,几周前改用它。
知道在哪里寻找答案或可能导致这种情况的原因吗?
修改
工作
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="13" />
不工作
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="14" />
答案 0 :(得分:0)
如果targetSdkVersion
为14(冰淇淋三明治)或更高,则默认情况下会为整个应用启用硬件加速。 Unfortunately Canvas.drawPicture()
is not supported if hardware acceleration is enabled
有两种方法可以解决这个问题:
将android:hardwareAccelerated="false"
添加到AndroidManifest.xml中的application
标记。这将禁用整个应用程序的硬件加速。
您可以使用硬件加速支持的Bitmap
和Canvas.drawBitmap()
。
参考:http://developer.android.com/guide/topics/graphics/hardware-accel.html
答案 1 :(得分:-1)
使用这些依赖...这里26.0.2是一个错误,版本14不支持。给出这些依赖: -
var filterC = filterA.And(filterb);
var usaCustomer = Context.Customer.Where(filterC);
并制作SDK版本: -
**
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版本。
并记住canvas.restore();不要用