我遇到了位图问题,因为当我从json解析image-url并将其设置为ImageView时,它在较大的设备上很小,比如Lenevo k3 Note。位图是一个好主意使用还是有任何其他方法来设置从json解析的图像。我已经设置了ImageView来将内容包装为高度和宽度以进行相应调整。相同的位图对象更大但在小型设备上不准确为什么这种情况很糟糕,我已经做了很多R& D但无法修复它。请为此问题提供更好的解决方案。一个明确定义的解决方案将提前感谢。
//code to set the imageview with bitmap
String imageUrl=saving.getBankLogo()
Bitmap bitmap=getBitmapFromURL(imageUrl);
//resized Bitmap
Bitmap resizedBitmap=bitmap.createScaledBitmap(bitmap,bitmap.getWidth(),bitmap.getHeight(),false);
imgIcon.setImageBitmap(resizedBitmap);
//code to get Bitmap from url
public Bitmap getBitmapFromURL(String imageUrl) {
Bitmap myBitmap;
Bitmap newBitMap;
try {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
URL url = new URL(imageUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
bitmapOptions.inSampleSize = 1;
bitmapOptions.inScaled=true;
/* DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;
*/
myBitmap = BitmapFactory.decodeStream(input, null, bitmapOptions);
/*myBitmap = Bitmap.createScaledBitmap(myBitmap, myBitmap.getHeight(),
myBitmap.getWidth(), true);*/
/* newBitMap = scaleToActualAspectRatio(myBitmap);
newBitMap=decodeFile(input);*/
input.close();
} catch (IOException e) {
e.printStackTrace();
return null;
}
return myBitmap;
}
答案 0 :(得分:0)
将ImageView设置为WRAP_CONTENT将使ImageView根据其中使用的图像或位图更改其大小。由于屏幕密度不同,在比较不同设备上的图像时会出现错误。小尺寸设备通常具有mdpi密度级别,使得Bitmap看起来更大,因为大屏幕的密度级别为hdpi或更高,使Bitmap看起来更小。
要使UI在各设备上看起来一致,请为ImageView设置特定的宽度和高度(确保在dp中设置尺寸)。然后,如果要保持其宽高比或将其设置为背景,如果要覆盖整个ImageView,请将Bitmap设置为源(xml代码中的src属性)。
访问以下链接了解更多详情:
http://developer.android.com/training/multiscreen/screendensities.html
http://developer.android.com/guide/practices/screens_support.html