【发布时间】:2012-06-15 22:31:03
【问题描述】:
我正在尝试从网络上获取一张图片并让它填满屏幕的整个宽度。这似乎正在完成我的计算,这些计算总是返回 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();
}
如果由于以下行,此代码将使程序崩溃:
浮动高度 =bitmap.getHeight() * (width/bitmap.getWidth());
由于某种原因,如果位图的宽度大于屏幕宽度,它将始终返回 0,因为浮点数不允许任何小数位。
一个例子是:
屏幕尺寸:800px;图片宽度:500px;图片高度:400px;
然后,新图像的宽度应为 800 像素,高度应为 640 像素。因为浮点数不能正常工作,而不是 400 x 1.6(即 800/500),所以代码会去掉小数点并做 400 x 1。
有什么线索吗?
【问题讨论】:
标签: java android floating-point imageview