簡體   English   中英

如何獲得ImageView來填充屏幕的整個寬度?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM