我正在尝试从网络上拍摄图像并让它填满整个屏幕宽度。这似乎正在进行我的计算,它总是返回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.
任何线索?
答案 0 :(得分:1)
将整数除法的结果转换为float:
float height = bitmap.getHeight() * ((float)width / bitmap.getWidth());
答案 1 :(得分:0)
不要自己缩放位图,让ImageView这样做。
见ImageView.setScaleType()。使用ScaleType.CENTER_CROP或CENTER_INSIDE,具体取决于您的需要。