Java 如何获得图像视图以填充整个屏幕宽度?

Java 如何获得图像视图以填充整个屏幕宽度?,java,android,floating-point,imageview,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.ima

我试着从网上拍摄一张图片,让它填满整个屏幕。这似乎是在做我的计算,它总是返回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,因为浮点不允许任何小数点

例如:

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

新图像的宽度应为800px,高度应为640px。因为浮点数不能正常工作,而不是400 x 1.6(即800/500),所以代码会删除小数点并执行400 x 1


有什么线索吗?

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

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

不要自己缩放位图,让ImageView来完成


看。根据需要,在内部使用ScaleType.CENTER\u裁剪或CENTER\u。

它应该是
((float)width/bitmap.getWidth())
,否则它将转换为整数除法的浮点结果,在给定的示例中为1。谢谢a.ch。它适用于弗拉基米尔的版本。我使用.net编码,其中option strict处理所有问题。为了增加答案,您需要将adjustViewBounds设置为true,以防止出现额外的空白。