如何在 BlackBerry 中设置 BitmapField 的宽度和高度?以下代码有效,但我无法显示整个图像。显示屏仅显示我图像的一部分。
BitmapField bmp = new BitmapField(connectServerForImage(ImageUrl)) {
protected void layout(int width, int height)
{
setExtent(80, 70);
}
};
如何在 BlackBerry 中设置 BitmapField 的宽度和高度?以下代码有效,但我无法显示整个图像。显示屏仅显示我图像的一部分。
BitmapField bmp = new BitmapField(connectServerForImage(ImageUrl)) {
protected void layout(int width, int height)
{
setExtent(80, 70);
}
};
我假设您是说您BitmapField
正在显示您检索到的图像裁剪?
而且您希望它可以缩放,也许可以缩放以适合您的BitmapField
? 有很多方法可以做到这一点,但一种是在下载后调整图像大小,然后再将其提供给BitmapField
:
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,那么就没有必要将 的范围也设置BitmapField
为 80x70。它应该默认为您提供的图像的大小。因此,您可以将代码简化为:
BitmapField bmp = new BitmapField(img);
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