我有一个静态方法,应该加载带状图像,并在图像带的每个图块中返回一个Bitmap []。我使用了这样的方法,但是在桌面java中使用BufferedImages时效果很好,但这里没有太多。
这里是方法:
public static Bitmap[] loadImageStrip(Resources res,int resid,int tilesize){
Bitmap temp1=BitmapFactory.decodeResource(res,resid);
System.out.println(temp1.getWidth());
System.out.println(temp1.getHeight());
Bitmap[] returnbitmap = new Bitmap[temp1.getWidth()/tilesize];
int iter=0;
int xtilepos=0;
while (iter<returnbitmap.length){
System.out.println(xtilepos);
returnbitmap[iter]=Bitmap.createBitmap(temp1,xtilepos,0,xtilepos+tilesize,tilesize);
iter++;
xtilepos+=tilesize;
}
return returnbitmap;
}
当我看着logcat时,>
System.out.println(temp1.getWidth());
打印3584,但在xtilepos例外之前,它最多只能达到1792 ...可能大约是temp1宽度的一半。
在这种情况下,tilesize为128,returnbitmap.length为28,这是我的图像带中相同数量的子图像。
起初我并没有真正期待的是我使用的带状图像是896x32,最初用于我的一个桌面Java游戏中,但是在android上,一切似乎都乘以4。
我不知道为什么得到一个IllegalArgumentException:x + width必须为<= bitmap.width()
,当1792 +128 <3584这是否是剥离图像太宽或其他问题?我需要制作双排或三排带状图像吗?
我有一个静态方法,应该加载带状图像,并在图像带的每个图块中返回一个Bitmap []。我使用了这样的方法,但是在桌面Java中使用BufferedImages时,效果很好...
您正在传递x+width
用于创建Bitmap
,而不仅仅是宽度。