是我对你自由过了火:android bit map getwidth 大小不正确 位图不符合的问题

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 08:27:44

android bit map getwidth 大小不正确

jennfier

初学者

帖子
6
精华
0
积分
10
最后访问
2011-06-24

  • 个人空间
  • 发短消息
  • 当前离线
1 # 发表于 2011-06-24 13:28  只看该作者

android bit map getwidth 大小不正确

Resources r = this.getContext().getResources();
        Bitmap  bmp;
        bmp = BitmapFactory.decodeResource(r , R.drawable.green_point);
        Log.d("XXXX", "bmp widht = " + bmp.getWidth());

实际大小是32, 得到的大小却是48, 被放大, 请问这是为什么。
帖子
6
精华
0
积分
10
阅读权限
10
性别
保密
在线时间
1  小时
注册时间
2011-06-22
最后访问
2011-06-24

查看详细资料

TOP

jennfier

初学者

帖子
6
精华
0
积分
10
最后访问
2011-06-24

  • 个人空间
  • 发短消息
  • 当前离线
2 # 发表于 2011-06-24 17:31  只看该作者 问题已经解决, 自己来回答问题
此问题主要是因为android density 问题引起的。
首先先确定的density 值。

// 通过这个类API可以得到屏幕的分辨率(通过DisplayMetrics类,可以得到屏幕的物理信息)
        DisplayMetrics dm = new DisplayMetrics();
        // 回调方法取得屏幕信息
        getWindowManager().getDefaultDisplay().getMetrics(dm);
      Log.d("Tank", "dm.densityDpi =" + dm.densityDpi + "dm.density" + dm.density + "dm.scaledDensity" + dm.scaledDensity );


densityDpi = 120 时, 使用的是drawable-ldpi 里面的内容
densityDpi = 160时, 使用的是drawable-mdpi 里面的内容
densityDpi = 240时, 使用的是drawable-hdpi 里面的内容

如果你的在drawable-hdpi 里面没有资源, 他会根据drawable-mdpi里的资源自动去放大。 所以就会导致得到的值和实际的不同。
如果实在没有,符合的,可以通过下面的方法解决, 带来的副作用,就是,存在正确的分辨率图片,将产生失真
// dm = new DisplayMetrics(); // context.getWindowManager().getDefaultDisplay().getMetrics(dm); // bgBitMap.setDensity((int)(bgBitMap.getDensity()*dm.density+0.5f));// pointerMap.setDensity((int)(pointerMap.getDensity()*dm.density+0.5f));
帖子
6
精华
0
积分
10
阅读权限
10
性别
保密
在线时间
1  小时
注册时间
2011-06-22
最后访问
2011-06-24

查看详细资料

TOP