【问题标题】:Targeting different screen sizes in Android with values-swdp使用 values-swdp 在 Android 中定位不同的屏幕尺寸
【发布时间】:2012-06-24 01:39:25
【问题描述】:

我知道我之前已经在项目中使用过这个,但无论出于何种原因,当我尝试将尺寸放入“values-sw360dp”时,宽度 >= 360dp 的屏幕并没有接收到这些尺寸,他们正在恢复到常规的“值”文件夹。任何想法为什么?如果您需要更多信息,请随时询问。

感谢您的宝贵时间。

编辑:获取屏幕分辨率的方法:(仿生出来到 360x640dp)

Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Log.d("Screen width(px)", width+","+height);

float density = getResources().getDisplayMetrics().density;
Log.d("Screen density", density+"");

float widthDp = width / density;
float heightDp = height / density;
Log.d("Screen width(dp)", widthDp+","+heightDp);

【问题讨论】:

  • 那么什么手机/模拟器/屏幕尺寸没有选择正确的值呢?
  • 机器人仿生。 (360x640dp) 我有默认的“values”文件夹和一个“values-sw360dp”文件夹... Bionic 使用默认“values”文件夹中的尺寸。

标签: android width screen dimensions


【解决方案1】:

我也认为你的数学不好。

Nexus one 是 480 x 800 像素,屏幕为 3.7 英寸,DPI 为 252dip。

你可以使用这个网站来计算密度:dpi

或手动操作。

这解释了密度桶:list-of-android-devices-with-pixel-density-buckets

因此,如果要让 Google Nexus One 使用它,您需要

/values-sw530dp/

顺便说一句,你声明吗

android:minSdkVersion="7" 在您的清单中,因为您的尝试在 Android 1.5 上不起作用(如果您使用旧的模拟器或其他东西)。

【讨论】:

  • 这对你来说也可能是一个有趣的阅读:stackoverflow.com/questions/9111206/…
  • 你从哪里得到 sw530dip?我认为它应该是“宽度/比例因子”,所以它是“480 / ~(252 / 160)”= sw320dp。同样来自文档“320dp:典型的手机屏幕(240x320 ldpi、320x480 mdpi、480x800 hdpi 等)”。
【解决方案2】:

我认为你的数学是错误的:

根据维基百科,显示器是 4.3 英寸 960 × 540 px qHD at 256 ppi

160/256 = 0.625

0.625*540 = 337.5

试试values-sw335dp 看看是否可行

【讨论】:

  • 我尝试过使用低得离谱的值,例如 100dp,但即使是我的 Nexus One 也无法使用它。这是我从 WindowManager 检查和日志语句中获得的信息:540x960(原始像素),1.5 密度 = 360x640 in dp。也许我在转换中做错了,或者 getResources().getDisplayMetrics().density 的值有误?
  • 试着吐出你从 DisplayMetrics.density 收到的值,我很想知道它给了你什么。此外,请确保您的目标至少为 13 级。
猜你喜欢
  • 2012-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
相关资源
最近更新 更多