[英]How do you get an ImageView to fill the entire width of the screen?
我正在尝试从网络上获取一张图像,并使其填满整个屏幕宽度。 这似乎正在完成我的计算,总是返回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,因为Float不允许任何小数位。
一个例子是:
屏幕尺寸:800px; 图片宽度:500像素; 图片高度:400px;
然后,新图像的宽度应为800px,高度应为640px。 由于浮点数无法正常运行,而不是具有400 x 1.6(即800/500),因此代码将小数点掉了,然后执行400 x 1。
有什么线索吗?
将整数除法的结果强制转换为float:
float height = bitmap.getHeight() * ((float)width / bitmap.getWidth());
不要自己缩放位图,而是让ImageView进行缩放。
请参见ImageView.setScaleType() 。 根据需要使用ScaleType.CENTER_CROP或CENTER_INSIDE。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.