【发布时间】:2016-03-07 10:20:43
【问题描述】:
对于 Android 电视,Android recommends 设计您的艺术作品资源,以便在高清分辨率(1920 x 1080 像素)下获得最佳观看效果。
电视有以下两种可用的分辨率:
- 1280x720
- 1920x1080
适用于 android 平板电脑的主要两种屏幕尺寸是 7 英寸和 10 英寸。这会导致以下两个关键解决方案(从here 考虑):
- 7 英寸平板电脑:1024x600
- 10 英寸平板电脑:1280x800
此外,对于不同的显示设备,我们可以为 Android TV 设备和表格设置不同的分辨率。
我需要为给定长度的给定消息计算每个设备的最小可读textSize。
举个例子,用户将最大消息长度设置为n chars。现在,我想限制用户使用特定设备的此字符长度。这样我就可以拥有最小fontSize 的最大消息长度,所有电视和平板电脑设备的用户都可以阅读。如果我们有下限就好了,但是最大字符限制不应该让 TextView 可以滚动。
最初我尝试根据 fontSize 的 textview 计算最大消息长度,如下所示:
TextView text = (TextView) findViewById(R.id.text);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;
int dens = dm.densityDpi;
double wi = (double) width / (double) dens;
double hi = (double) height / (double) dens;
double x = Math.pow(wi, 2);
double y = Math.pow(hi, 2);
double screenInches = Math.sqrt(x + y);
//long charLimit = (long) (Math.pow(Math.floor((dens / 18)), 2) * 2);
long charLimit = (long) (((Math.floor((dens / 26)) * wi) * (Math.floor((dens / 26)) * hi)) / (wi + hi));
//long charLimit = (long) ((Math.floor((dens / 22)) * Math.floor((x + y)) * 2));
String msg = "";
for (int i = 0; i < charLimit; i++) {
msg += "A";
}
text.setText(msg);
Log.e("screenInches", "screenInches: " + screenInches + " width:" + width + "/" + wi + " height:" + height + "/" + hi + " densityDpi:" + dens + " charLimit:" + charLimit);
但无法获得满意的结果。现在,我想要的只是计算最小可读fontSize(比如 S),对于给定长度(比如 n 字符)的消息,在电视和平板设备上都无需滚动即可显示。
我知道 font-family 和 font-style 也会影响这一点。但是考虑到系统默认配置是正确的方法,我应该遵循吗?
【问题讨论】:
-
这不取决于他坐得离电视多远以及是否戴眼镜?
-
可能是,但建议电视的最小字体大小为 12sp。默认文本大小设置应为 18sp。我们可以将 18sp 作为电视的基准。检查:developer.android.com/design/tv/style.html
-
感谢您的链接,但我记得 GoogleTV 的日子。
-
是的,有很多可能性。但有一些限制,我们可以让它工作。
标签: android resolution font-size tablet android-tv