我试图从网上拍摄图像,并填充整个屏幕宽度。这似乎是工作到做我的计算,其总是返回0。如何获得ImageView以填充整个屏幕宽度?
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()*(宽/bitmap.getWidth());
由于某些原因,如果位图的宽度大于屏幕宽度,它将始终返回0,因为Float不允许任何小数位。
一个例子是:
屏幕尺寸:800px;图像宽度:500px;图片高度:400px;
新图像的宽度应为800px,高度为640px。因为浮球不能正常工作,而不是400 x 1.6(即800/500),代码是下降小数,并做400 x 1.
任何线索?
它应该是'((float)width/bitmap.getWidth())'否则它会抛出整数除法的结果,在给出的例子中为1. – Vladimir 2012-02-06 08:22:10
对不起:),我编辑了答案 – 2012-02-06 08:25:31
谢谢a.ch.它适用于弗拉基米尔的版本。我使用.net编码哪里选项严格处理一切。 – 2012-02-06 08:31:47