Android 显示大图片

主要的代码如下:

     BitmapFactory.Options options = new BitmapFactory.Options();

        //图片解析配置

        options.inJustDecodeBounds = true;

        //获取图片的属性并赋予options

        BitmapFactory.decodeResource(getResources(), R.drawable.f1, options);

        //获得图片实际宽高

        int imgWidth = options.outWidth;

        int imgHeight = options.outHeight;

        System.out.println("outWidth = " + imgWidth);

        System.out.println("outHeight = " + imgHeight);

        //获取屏幕大小

        WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);

        int windowwidth = windowManager.getDefaultDisplay().getWidth();

        int windowheight = windowManager.getDefaultDisplay().getHeight();

        System.out.println("width = " + windowwidth);

        System.out.println("height = " + windowheight);

        //计算缩放

        int scale = 1;

        int scaleX = imgWidth/windowwidth;

        int scaleY = imgHeight/windowheight;



        if(scaleX>1 && scaleX>scaleY) {

            scale = scaleX;

        }

        if(scaleY>1 && scaleY>scaleX) {

            scale = scaleY;

        }

        System.out.println("scale = " + scale);

        //真的解析图片

        options.inJustDecodeBounds = false;

        options.inSampleSize = scale;

        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.f1, options);

        imageView.setImageBitmap(bitmap);

 附(计算inSampleSize的工具方法):

   public static int calculateInSampleSize(BitmapFactory.Options options,

                                             int reqWidth, int reqHeight) {

        final int height = options.outHeight;

        final int width = options.outWidth;

        int inSampleSize = 1;

        if (height > reqHeight || width > reqWidth) {

            final int heightRatio = Math.round((float) height

                    / (float) reqHeight);

            final int widthRatio = Math.round((float) width / (float) reqWidth);

            inSampleSize = heightRatio < widthRatio ? widthRatio : heightRatio;

        }

        return inSampleSize;

    }

 

你可能感兴趣的:(android)