Android:每次调用函数时,result drawable中的层顺序都是不同的
我有以下代码:Android:每次调用函数时,result drawable中的层顺序都是不同的,android,canvas,bitmap,drawable,Android,Canvas,Bitmap,Drawable,我有以下代码: public Drawable getMergedIcon(Drawable origIcon) { Bitmap underlayBitmap = null, overlayBitmap = null; if (isSupportUnderlays()) { int overlayId = r.nextInt(Underlays.size()); underlayBitmap = Underlays.get(overlayId
public Drawable getMergedIcon(Drawable origIcon) {
Bitmap underlayBitmap = null, overlayBitmap = null;
if (isSupportUnderlays()) {
int overlayId = r.nextInt(Underlays.size());
underlayBitmap = Underlays.get(overlayId);
if(Overlays.size() == Underlays.size()) {
overlayBitmap = Overlays.get(overlayId);
}
if(underlayBitmap == null) {
return origIcon;
}
boolean needResize = false;
int targetWidth, targetHeight;
Bitmap iconBitmap = ((BitmapDrawable) origIcon).getBitmap();
if(iconBitmap.getHeight() > underlayBitmap.getHeight()) {
targetWidth = iconBitmap.getWidth();
targetHeight = iconBitmap.getHeight();
needResize = true;
} else {
targetWidth = underlayBitmap.getWidth();
targetHeight = underlayBitmap.getHeight();
}
Paint paint = new Paint();
Bitmap result = Bitmap.createBitmap(targetWidth, targetHeight, iconBitmap.getConfig());
Canvas canvas = new Canvas(result);
if(!needResize) {
canvas.drawBitmap(underlayBitmap, 0, 0, paint);
} else {
canvas.drawBitmap(Bitmap.createScaledBitmap(underlayBitmap, targetWidth,targetHeight, false), 0, 0, paint);
}
int left = (targetHeight - (int) (targetHeight * iconScale)) / 2;
int top = (targetWidth - (int) (targetWidth * iconScale)) / 2;
iconBitmap = Bitmap.createScaledBitmap(iconBitmap, (int) (targetWidth * iconScale),(int) (targetHeight * iconScale), false);
canvas.drawBitmap(iconBitmap, left, top, paint);
if(overlayBitmap != null) {
if(!needResize) {
canvas.drawBitmap(overlayBitmap, 0, 0, paint);
} else {
canvas.drawBitmap(Bitmap.createScaledBitmap(overlayBitmap, targetWidth,targetHeight, false), 0, 0, paint);
}
}
canvas.save();
BitmapDrawable icon = new BitmapDrawable(mContext.getResources(), result);
return icon;
}
return origIcon;
}
它从覆盖图和参考底图中获取随机位图,并在它们之间放置图标
但是当我调用这个函数时,层是随机丢失的。
f、 e.第一次调用时,我有参考底图和图标,第二次调用时,我有覆盖图和图标等
我总是有图标,但只有一层(参考底图或覆盖层),从来没有使用过它们。代码是可行的,这是我愚蠢的错误。。。
我刚刚在数组中放置了错误的绘图表。这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论-您可以随时在自己的帖子上发表评论,一旦您有足够的评论,您就可以发表评论。请在帖子上给出一个答案,并附上(简短的)错误的答案。你可以接受这个答案。这个答案没有提供任何关于错误的信息,因此对于以后发现这个问题的人来说没有任何用处。