我正在我的Nexus 5设备(~445 ppi)上开发Android应用程序,我正在使用Roboto Light作为应用程序中几个部分的字体。 当在我的设备中显示时,Roboto Light文本看起来干净利落,但是当在具有较低像素密度的屏幕的设备上测试应用程序时,Roboto Light看起来非常糟糕(更大胆的字体看起来很好)。
告诉我的应用在高密度屏幕上使用Roboto Light以及在低密度屏幕上使用另一种字体的最佳和最快捷方式是什么?我的第一个想法是创建不同的values
目录(values-mdpi,values-hdpi,values-xhdpi ...),在每个目录中放置strings.xml
并使用相同的密钥并为其指定字体的文件名我希望使用每个密度,然后使用该字符串加载字体...但是这看起来有点复杂,我想知道是否有更简单的方法。
答案 0 :(得分:1)
DisplayMetrics metrics = getResources()。getDisplayMetrics();
int densityDpi =(int)(metrics.density)
取决于您的密度,您可以将字体类型设置为textview,其他控件如下面的代码使用
字体font = Typeface.createFromAsset(getAssets(),“/ font / Avirir.ttf”);
textView.setTypeface(字体);
答案 1 :(得分:0)
您可以通过
以编程方式执行此操作float density = getResources()。getDisplayMetrics()。density;
这会给你:
0.75 - ldpi
1.0 - mdpi
1.5 - hdpi
2.0 - xhdpi
3.0 - xxhdpi
4.0 - xxxhdpi
然后检查密度并采取相应措施:
if (density >= 2.0) {
textView.setTypeface(Typeface.SANS_SERIF);
} else {
textView.setTypeface(Typeface.SANS_SERIF,Typeface.BOLD);
}