【问题标题】:Can't diffentiate two different screen size无法区分两种不同的屏幕尺寸
【发布时间】:2013-05-29 09:37:54
【问题描述】:

我正在两款截然不同的手机上测试我的应用:

Htc One X (running 4.1)
720x1280, density XHigh (320dpi)

Samnsung GT-S6500D running 2.3.6
320x480, density medium, (160dpi)

现在,如何确保每个设备使用不同的布局文件夹? 我创造了 布局-sw720dp, 布局-sw600dp, 布局正常, ...

因为 2.3 没有考虑 layout-sw320dp,我猜它需要 layout-normal,确实如此,很好。

现在为什么大屏幕不占用 layout-sw720dp 文件夹?也属于layout-normal>>为什么?

我用

    android:minSdkVersion="10"
    android:targetSdkVersion="17" 

并构建target = level 15 (4.0.3)

【问题讨论】:

标签: android screen-size


【解决方案1】:

获取屏幕分辨率并相应地转移它

    private final float LOW_LEVEL=0.75f;
    private final float MEDIUM_LEVEL=1.0f;
    private final float HIGH_LEVEL=1.5f;

    float level = getApplicationContext().getResources().getDisplayMetrics().density;
            if(level == LOW_LEVEL){
                    setContentView(R.layout.activity_login);
            }else if(level == MEDIUM_LEVEL){
                    //do smoothing here
                    setContentView(R.layout.activity_login);

            }else if(level == HIGH_LEVEL){
                    //do something here
                    setContentView(R.layout.activity_login);
            }else {
                    //do something here
                    setContentView(R.layout.activity_logins);
            }

【讨论】:

  • 我的应用程序在活动和片段的数量方面相当复杂,如果我必须采用这种方法,我需要更新很多类。这是唯一的方法吗?根据文档,布局文件夹旨在处理不同的屏幕尺寸。
【解决方案2】:

我认为问题在于您使用了两种不同的布局分类。正常用作广义屏幕密度,为什么自 3.2 以来可用的布局基于最小屏幕尺寸。尝试删除正常密度布局,看看会发生什么。 当然,您始终可以按照上述答案的建议从代码中扩充不同的布局。

【讨论】:

  • 谢谢,但我试过了,它在 2.3 上运行时崩溃,因为(我想)它没有找到任何布局文件夹(仅 layout-swdp),如果电话不支持版本
  • 我也错过了您针对旧版本的部分。其他可能的问题可能是 Htc One X 实际上没有 720 像素,但少了一点,因此不适合该类别,因为数字意味着最小值。例如,这会影响 Nexus 手机,因为屏幕上的按钮会缩小应用可用的屏幕尺寸。
  • 是的,但是 Log.d(LOG_TAG, "wXh = "+metrics.widthPixels+"x"+metrics.heightPixels);确实记录了我 720x1280 ,如果不是这样,它至少应该属于 layout-sw600dp 。但事实并非如此。我正在实施 sourabh kasliwal 命题,这对我来说不是一个好的解决方案,但至少它确实有效。
  • stackoverflow.com/questions/9006494/… 上也有类似的讨论,所以请检查那里的答案,因为它们可能会有所帮助。检查@Tary 的最后一个答案,因为我认为这可以解决您的问题。基本上他说正常会覆盖特定分辨率的显示,你应该使用 normal-1280x720 文件夹。
  • 谢谢,确实,创建文件夹 layout-normal-1280x720 有效。我糊涂了。我不想为这个星球上存在的每个屏幕分辨率创建一个文件夹。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-15
  • 2015-02-28
  • 2015-11-18
  • 1970-01-01
  • 2012-05-23
  • 2012-10-30
相关资源
最近更新 更多