如何在BlackBerry中设置BitmapField的宽度和高度?以下代码有效,但我无法显示整个图像。显示屏仅显示我图像的某些部分。
BitmapField bmp = new BitmapField(connectServerForImage(ImageUrl)) {
protected void layout(int width, int height)
{
setExtent(80, 70);
}
};
答案 0 :(得分:2)
我认为你说你的BitmapField
正在显示你检索到的图像裁剪?
你希望它可以扩展,也许缩放到适合BitmapField
的大小?有很多方法可以做到这一点,但一种方法是在下载后调整图像大小,然后再将其提供给BitmapField
:
From this answer on resizing a Bitmap
public static Bitmap resizeImage(Bitmap originalImage, int newWidth, int newHeight) {
Bitmap newImage = new Bitmap(newWidth, newHeight);
originalImage.scaleInto(newImage, Bitmap.FILTER_BILINEAR, Bitmap.SCALE_TO_FILL);
return newImage;
}
(请注意,如果您必须支持BlackBerry OS< 5.0,我提供的链接有另一种调整图像大小的方法。
然后,使用
Bitmap img = resizeImage(connectServerForImage(ImageUrl), 80, 70);
BitmapField bmp = new BitmapField(img) {
protected void layout(int width, int height)
{
setExtent(80, 70);
}
};
但是,我相信如果你实际上将Bitmap
img
的大小设置为80x70,那么就不需要也设置{{1}的范围到80x70。它应该默认为您提供的图像的大小。因此,您可以将代码简化为:
BitmapField
答案 1 :(得分:0)
int prefWidth=(30*bitmap.getWidth())/bitmap.getHeight();
Bitmap temp=resizeBitmap(bitmap,prefWidth,30);
,其中
private Bitmap resizeBitmap(Bitmap image, int width, int height)
{
int rgb[] = new int[image.getWidth()*image.getHeight()];
image.getARGB(rgb, 0, image.getWidth(), 0, 0, image.getWidth(), image.getHeight());
int rgb2[] = rescaleArray(rgb, image.getWidth(), image.getHeight(), width, height);
Bitmap temp2 = new Bitmap(width, height);
temp2.setARGB(rgb2, 0, width, 0, 0, width, height);
return temp2;
}
这支持bb os 4.5