如何让ImageView填满整个屏幕宽度?

时间:2012-02-06 08:15:52

标签: java android floating-point imageview

我正在尝试从网络上拍摄图像并让它填满整个屏幕宽度。这似乎正在进行我的计算,它总是返回0。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Integer width = metrics.widthPixels;

try {
    ImageView imageView = (ImageView) findViewById(R.id.imageView1);

    Bitmap bitmap = BitmapFactory.decodeStream((InputStream) new URL("http://www.google.com/intl/en_ALL/images/logos/images_logo_lg.gif").getContent());
    float height =bitmap.getHeight() * (width/bitmap.getWidth());

    bitmap = Bitmap.createScaledBitmap(bitmap, width, (int) height, true);
    imageView.setImageBitmap(bitmap);
} catch (MalformedURLException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

如果由于行:

,此代码将使程序崩溃

float height = bitmap.getHeight()*(width / bitmap.getWidth());

由于某种原因,如果位图的宽度大于屏幕宽度,它将始终返回0,因为Float不允许任何小数位。

一个例子是:

屏幕尺寸:800px;图像宽度:500px;图像高度:400px;

新图像的宽度应为800px,高度为640px。因为浮动没有正常工作而不是400 x 1.6(即800/500),代码正在丢弃小数并且执行400 x 1.

任何线索?

2 个答案:

答案 0 :(得分:1)

将整数除法的结果转换为float:

float height = bitmap.getHeight() * ((float)width / bitmap.getWidth());

答案 1 :(得分:0)

不要自己缩放位图,让ImageView这样做。

ImageView.setScaleType()。使用ScaleType.CENTER_CROP或CENTER_INSIDE,具体取决于您的需要。