zoukankan      html  css  js  c++  java
  • android 高效加载大图

    在写代码的时候就已经解释:

        /**
         * 计算samplesize的大小
         * @param options 传一个BitmapFactory.Options 进去获取图片的大小和类型
         * @param viewWidth imageview的大小  宽
         * @param viewHight imageview的大小  长
         * @return 返回samplesize
         */
        private static int caculateSampleSize(BitmapFactory.Options options, int viewWidth, int viewHight){
            final int imageWidth = options.outWidth;
            final int imageHight = options.outHeight;
            int sampleSize = 1;
            if (imageWidth > viewWidth || imageHight > viewHight){
                final int halfImageWidth = imageWidth/2;
                final int halfImageHight = imageHight/2;
                while (halfImageHight/sampleSize>viewHight || halfImageWidth/sampleSize>viewWidth){
                    sampleSize *= 2;
                }
            }
            return  sampleSize;
        }
        /**
         *通过资源图片设置好缩略图片
         * @param res 资源图片
         * @param resId 图片id
         * @param viewWidth imageview控件宽
         * @param viewHight imageview控件长
         * @return 返回一个位图
         */
        private static Bitmap decodeSampleBitmapFromResources(Resources res,int resId,int viewWidth,int viewHight){
            final BitmapFactory.Options options = new BitmapFactory.Options();
            options.inJustDecodeBounds = true;
            BitmapFactory.decodeResource(res, resId, options);
            //设置缩小的尺寸
            options.inSampleSize = caculateSampleSize(options,viewWidth,viewHight);
            options.inJustDecodeBounds = false;
            return BitmapFactory.decodeResource(res, resId, options);
        }

    然后调用就行了。

    imageView.setImageBitmap(decodeSampleBitmapFromResources(getResources(),R.mipmap.image_111,imageView.getMaxWidth(),imageView.getMaxHeight()));

    最后给出一个  得到图片资源的大小和类型的方法:

        /**
         * 获得 图片 resId 的尺寸大小和类型
         * @param resId  图片资源的ID
         */
        private void setOpitions(int resId){
            BitmapFactory.Options options = new BitmapFactory.Options();
            //设置 inJustDecodeBounds 属性为true可以在解码的时候避免内存的分配,它会返回一个null的Bitmap,但是可以获取到 outWidth, outHeight 与 outMimeType。
            options.inJustDecodeBounds = true;
            //BitmapFactory.decodeResource(res,int res id,options);获得图片资源的一系列信息
            BitmapFactory.decodeResource(getResources(),resId,options);
            //图片资源的长宽和图片类型
            int imageWidth = options.outWidth;
            int imageHight = options.outHeight;
            String imageType = options.outMimeType;
        }

    over!

  • 相关阅读:
    每日英语:Easing Gaokao Restrictions: a New Year's Gift?
    每日英语:Targeting Grandpa: China’s Seniors Hunger for Ads
    每日英语:Eight Questions: Bianca Bosker on China's 'Original Copies' in Architecture
    每日英语:There's No Avoiding Google+
    如何删除控制面板中没有"删除"菜单的程序
    html中利用javascript实现文本框字数的动态计算
    一条批处理语句ping局域网内的所有机器
    javascript中的"+"运算
    在asp.net中使用分帧页面时,ajax control报access denied错误的解决方法
    gridview和repeater中取得行的序号
  • 原文地址:https://www.cnblogs.com/android-host/p/5316050.html
Copyright © 2011-2022 走看看