位图在使用imageview

时间:2016-04-09 07:01:01

标签: android json bitmap

我遇到了位图问题,因为当我从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;
                        }

1 个答案:

答案 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