为Android平板电脑计算最小可读textSize&电视设备

时间:2016-03-07 10:20:44

标签: android resolution font-size tablet android-tv

对于Android电视,Android recommends设计您的艺术作品资源,以便以高清分辨率(1920 x 1080像素)获得最佳观看效果。

电视有以下两种可用分辨率:

  • 1280×720
  • 1920×1080

适用于Android平板电脑的主要两种屏幕尺寸是7英寸和10英寸。 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),对于要在Tv和平板电脑设备上无滚动显示的消息的给定长度(比如n char)。

我知道font-family和font-style也会影响这个。但考虑到系统默认配置是正确的方法,我应该遵循?

1 个答案:

答案 0 :(得分:0)

使用可变宽度字体无法做到这一点。我写的每个字符都有不同的宽度,这意味着每个字符的宽度必须单独计算。等宽字体更容易计算。