在android中使用资源中的不同密度图像

时间:2014-06-05 19:25:50

标签: android image

我已经在this链接中成功实现了android中的表情符号。问题是当应用程序在更高密度的设备上运行时,所选的表情符号显得太小。我试过在显示之前更改drawable的尺寸如下

ImageGetter imageGetter = new ImageGetter() {
        public Drawable getDrawable(String source) {
            StringTokenizer st = new StringTokenizer(index, ".");
            Drawable d = new BitmapDrawable(getResources(),
                    emoticons[Integer.parseInt(st.nextToken()) - 1]);

            Log.i("tag", "" + Integer.parseInt(st.nextToken()));

            Drawable drawable = getResources().getDrawable(
                    getResources().getIdentifier(
                            "e" + (Integer.parseInt(st.nextToken()) - 1),
                            "drawable", getPackageName()));
            // d.setBounds(0, 0, d.getIntrinsicWidth(),
            // d.getIntrinsicHeight());
            d.setBounds(0, 0, 40, 40);
            return d;
        }
    };

但这没有用。 .png图像位于资源文件夹中。有没有办法在资源文件夹中显示不同密度的图像?像drawable-ldp,drawable-mdp ......?

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

DisplayMetrics metrics = getResources().getDisplayMetrics();
int densityDpi = (int)(metrics.density * 160f);

d.setBounds(0, 0, 10*densityDpi, 10*densityDpi);

现在,在调整对象大小时,您的代码将考虑屏幕的密度。这有助于在不同设备之间保持一致的尺寸。