2016-03-07 20 views
0

对于Android电视,Android recommends设计您的艺术品资产以便在高清分辨率(1920 x 1080像素)下获得最佳观看效果。计算Android平板电脑和电视设备的最小可读文本大小

有以下用于电视两个可用的解决方案:

  • 1280×720
  • 1920×1080

主要有两个屏幕可用于Android平板电脑尺寸为7英寸& 10英寸。这招致以下两个关键分辨率(从here考虑):

  • 7” 片剂:1024×600
  • 10” 片剂:1280×800

此外,对于不同的显示设备,我们可以有不同的分辨率Android电视设备和桌子也是。

我需要为给定长度的给定消息计算每个设备的最小可读textSize

让我举个例子,用户设置最大消息长度为n chars。现在,我想限制用户针对特定设备的此字符长度。所以我可以有最大长度的消息,最低fontSize,这是用户可读的所有电视&平板设备。如果我们有较低的限制,那就没关系,但最大字符数限制不应该使TextView可以滚动。

起初,我试图计算像下面的最大消息长度为每TextView中的fontSize

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也会影响到这一点。但考虑到系统默认配置是正确的方法,我应该遵循?

+0

难道这不取决于他离开电视有多远,以及他是否戴着眼镜? – Shark

+0

可能是,但电视的最小推荐字体大小为12sp。默认文字大小设置应为18sp。我们可能以18sp为电视基准。检查:http://developer.android.com/design/tv/style.html – astuter

+0

感谢您的链接,但我记得通过GoogleTV天。 – Shark

回答

0

对于可变宽度的字体,这是不可能的。我正在写的每个字符都有不同的宽度,这意味着每个字符的宽度必须单独计算。等宽字体将更容易计算。

相关问题