在安卓中使用DP的问题?

4
在开发应用程序时,我做了以下工作: 1.将320*480作为基本分辨率,160dpi作为基本密度。 2.将所有图像保存在drawable-mdpi文件夹中。 3.在xml布局中指定图像的宽度和高度时使用dp。
正如开发者网站上所述,如果我们使用dp,则它会自动按比例缩放以适应屏幕。但我没有得到期望的结果,图像在较小的设备上没有正确缩放。
因此,我做了以下工作: 1.在xml文件中创建布局 2.在运行时将图像的宽度和高度设置为屏幕宽度和高度的百分比。 通过这样做,我得到了期望的结果。图像在所有设备上都能正确缩放,从小型240*320到平板电脑600*1024。
所以我的问题是,按照开发者网站上的说明,我应该使用dp来指定宽度和高度吗?还是应该在程序中进行设置?如果不是,dp的概念是什么,我在哪里可以使用它?

这是我自己一直在思考的问题。我还没有掌握图片在Android中的显示方式。 - EGHDK
1个回答

2

首先,我认为使用“dp”是很好的。这没有任何问题。

其次,为了解决您提到的问题,最好的方法是将适当大小的图像放在ldpi、hdpi和xhdpi文件夹中。然后您就不必动态调整布局。

LDPI:MDPI:HDPI:XHDPI中图像大小的比例=3:4:6:8

或者,您可以动态预测设备大小,然后相应地设置布局:

    DisplayMetrics displayMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    switch(displayMetrics.densityDpi){ 
        case DisplayMetrics.DENSITY_LOW: 
            //your layout for samll sized devices
            break; 
        case DisplayMetrics.DENSITY_MEDIUM: 
            //your layout for medium sized devices
            break; 
        case DisplayMetrics.DENSITY_HIGH: 
            //your layout for large sized devices
            break; 
    } 

我无法将所有图像保存在各自的文件夹中,因为我有很多图像,而且这不是我要寻找的解决方案。我想要的是,我应该有一个或两个布局,并且图像最多应保存在两个文件夹中,我的布局和图像应该在每个设备上进行缩放。 - sankettt
然后,您可以动态预测设备的尺寸,并相应地设置布局(图像的放置和缩放)。我已经为此编辑了答案。 - Yogesh Somani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接