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