在android中,由于密度的影响,如果想得到图片的宽高是不行的,具体为什么我就大概说一下,具体的请搜索度娘或者古哥吧。 原因是如果你把图片放在drawable-mdpi里,而手机是属于drawable-hdpi的话,图片是被自动放大,就这样取到的宽与高未必就是正确的。那么如何让android上面显示的图片是基于原来图片的比例呢,首先你可以在res目录下创建一个drawable-nodpi的目录,这个目录下的图片是不根据dpi的多少来进行拉伸或者缩小滴。然后,就是根据屏幕的宽 和 图片的宽高 得出图片在屏幕显示的高,宽是固定的,就是屏幕的宽,所以不用算了。

private void getWidth_Height() {        Display display = getWindowManager().getDefaultDisplay();        int width = display.getWidth(); // deprecated        int height = display.getHeight(); // deprecated        Bitmap mBitmap = createImageWithResouce(R.drawable.history4);        image.setLayoutParams(new LayoutParams(width, width / getBitmapWidth(mBitmap) * getBitmapHeight(mBitmap)));        image.setImageBitmap(createImageWithResouce(R.drawable.history4));    }    private Bitmap createImageWithResouce(int resourceID) {        Bitmap bit = BitmapFactory.decodeResource(getResources(), R.drawable.history4);        return bit;    }        private int getBitmapWidth(Bitmap bitmap){        return bitmap.getWidth();    }    private int getBitmapHeight(Bitmap bitmap){        return bitmap.getHeight();    }        // 释放bitmap    private void releaseBitmap(Bitmap bitmap){        if (bitmap!=null && !bitmap.isRecycled()) {            bitmap.recycle();            bitmap = null;        }    }

建议使用如下的这种,应用了LruCache作为管理

public class ImageUtil {    private LruCache<String, Bitmap> mMemoryCache;    private final Context mContext;    private static ImageUtil imageUtil;    private static Object obj = new Object();    private int memClass;    private int cacheSize;    private ImageUtil(Context mContext) {        this.mContext = mContext;        createLruCache(mContext);    }    private void createLruCache(Context mContext) {        memClass = ((ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();        cacheSize = 1024 * 1024 * memClass / 8;        mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {            @Override            protected int sizeOf(String key, Bitmap value) {                // TODO Auto-generated method stub                return value.getRowBytes();            }        };    }    public static ImageUtil getInstance(Context mContext) {        if (imageUtil == null) {            synchronized (obj) {                if (imageUtil == null) {                    imageUtil = new ImageUtil(mContext);                }            }        }        return imageUtil;    }    public void adjustImageSize(ImageView imageView, int imageResourceId) {        Bitmap mBitmap = null;        Display display = ((MainActivity) mContext).getWindowManager().getDefaultDisplay();        int width = display.getWidth(); // deprecated        int height = display.getHeight(); // deprecated        Bitmap bitmapCache = mMemoryCache.get(imageResourceId + "");        if (bitmapCache != null) {            mBitmap = bitmapCache;        } else {            mBitmap = createImageWithResouce(mContext, imageResourceId);            mMemoryCache.put(imageResourceId + "", mBitmap);        }        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(width, width                / getBitmapWidth(mBitmap) * getBitmapHeight(mBitmap));        layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);        imageView.setLayoutParams(layoutParams);        imageView.setBackgroundDrawable(new BitmapDrawable(mBitmap));        // imageView.setImageBitmap(mBitmap);    }    private static Bitmap createImageWithResouce(Context context, int resourceID) {        Bitmap bit = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher);        return bit;    }    private int getBitmapWidth(Bitmap bitmap) {        return bitmap.getWidth();    }    private int getBitmapHeight(Bitmap bitmap) {        return bitmap.getHeight();    }}

更多相关文章

  1. Android官方开发中心之Web Apps屏幕适配
  2. Android中9patch图片格式(xx.9.png)介绍与制作详解
  3. Android X86强制竖屏怎么办?安卓(Android)x86屏幕旋转成横屏解决
  4. [Android] 触屏setOnTouchListener实现图片缩放、移动、绘制和添
  5. Android中自定义SeekBar的背景颜色,进度条颜色,以及滑块的图片
  6. Android本地缓存和远程图片获取的实现
  7. Java乔晓松-android中获取图片的缩略图(解决OutOfMemoryError)内
  8. Android录制屏幕的实现方法
  9. android的EditText里文字和图片混合编辑与显示

随机推荐

  1. Android(安卓)网上学习工具网址
  2. Android网文
  3. Android图形报表之AchartEngine(附开发包
  4. Android中Manifest.xml配置文件
  5. androidの读取短信内容
  6. MQTT的学习研究(十五) MQTT 和android整合
  7. 3步解决AS提示:Compilation is not suppor
  8. Android(安卓)判断SD卡是否存在及容量查
  9. Ubuntu12.04 安装adb
  10. Android捕鱼游戏1.10破解