【问题标题】:Calculate minimum readable textSize for Android tablets & tv devices计算 Android 平板电脑和电视设备的最小可读 textSize
【发布时间】: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


【解决方案1】:

对于可变宽度字体,这不可能做得很好。我写的每个字符都有不同的宽度,这意味着每个字符的宽度必须单独计算。等宽字体会更容易计算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多