【发布时间】:2019-07-22 12:05:51
【问题描述】:
我正在开发一款适用于 Android 的动态壁纸应用程序。
当我使用 loadShape 和一些 SVGs 时,它在 Android 模式下无法正确呈现。
但它在 java 模式下正确呈现。
这是一个这样的 svg kiwi.svg。它被渲染为this。
但是this svg 正在正确呈现。 Download orange.svg
我整理了这个简单的代码来演示我的意思。
PShape svg;
int num = 1;
String[] assets = {
"tomato.svg", "ogears.svg", "watermelon.svg", "kiwi.svg"
};
void settings() {
size(displayWidth, displayHeight, P3D);
}
void setup(){
svg = loadShape(assets[num]);
}
void draw(){
background(255);
push();
translate(svg.width/2, svg.height/2);
scale(map(mouseY, 0, height, 0, 1));
translate(-svg.width/2, -svg.height/2);
ellipse(displayWidth/2, displayHeight/2, 200, 200);
//translate(displayWidth/2, displayHeight/2);
shape(svg);
push();
noFill();
stroke(0);
strokeWeight(10);
rect(0, 0, svg.width, svg.height);
pop();
pop();
}
void push(){
pushMatrix();
pushStyle();
}
void pop(){
popStyle();
popMatrix();
}
void mousePressed(){
num++;
num = num % 4;
svg = loadShape(assets[num]);
}
可以在此处找到资产和完整代码。 SVGTests.zip
即使我使用像 size(.., .., P2D) 这样的 P2D 渲染器,它也不工作。
我猜我的 svg 与 processing-android 不兼容。
当我使用this svg 时,我得到ArrayIndexOutOfBoundsException: 145 并且草图死了。 Download-it
所以我的问题是我应该去用loadImage 替换我所有的loadShape 用法并将我所有的svg 转换为png 格式而不是处理这个吗?
【问题讨论】:
标签: android processing