对于Android电视,Android recommends设计您的艺术作品资源,以便以高清分辨率(1920 x 1080像素)获得最佳观看效果。
电视有以下两种可用分辨率:
适用于Android平板电脑的主要两种屏幕尺寸是7英寸和10英寸。 10英寸。这导致遵循两个关键决议(从here考虑):
此外,对于不同的显示设备,我们可以为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也会影响这个。但考虑到系统默认配置是正确的方法,我应该遵循?
答案 0 :(得分:0)
使用可变宽度字体无法做到这一点。我写的每个字符都有不同的宽度,这意味着每个字符的宽度必须单独计算。等宽字体更容易计算。