Java 针对不同的屏幕密度使用不同的字体
我正在我的Nexus5设备上开发一个Android应用程序(~445ppi),我在应用程序的一些部分使用RobotoLight作为字体。 当显示在我的设备上时,Roboto Light文本看起来干净而清晰,但是当在屏幕像素密度较低的设备上测试应用程序时,Roboto Light看起来非常糟糕(粗体字体看起来不错)Java 针对不同的屏幕密度使用不同的字体,java,android,Java,Android,我正在我的Nexus5设备上开发一个Android应用程序(~445ppi),我在应用程序的一些部分使用RobotoLight作为字体。 当显示在我的设备上时,Roboto Light文本看起来干净而清晰,但是当在屏幕像素密度较低的设备上测试应用程序时,Roboto Light看起来非常糟糕(粗体字体看起来不错) 告诉我的应用程序在高密度屏幕上使用Roboto Light,在低密度屏幕上使用另一种字体,最好和最快的方法是什么?我的第一个想法是创建不同的值目录(值mdpi、值hdpi、值xhdpi
告诉我的应用程序在高密度屏幕上使用Roboto Light,在低密度屏幕上使用另一种字体,最好和最快的方法是什么?我的第一个想法是创建不同的
值
目录(值mdpi、值hdpi、值xhdpi…),用相同的键在每个目录中放置一个strings.xml
,并为其分配我希望用于每个密度的字体文件名,然后使用该字符串加载字体。。。不过,这看起来有点复杂,我想知道是否有更简单的方法。您可以通过
浮动密度=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);
}
DisplayMetrics=getResources().getDisplayMetrics() int densityDpi=(int)(metrics.density) 根据您的密度,您可以将字体类型设置为textview和其他控件,如下面的代码使用 Typeface font=Typeface.createFromAsset(getAssets(),“/fonts/Avenir.ttf”) textView.setTypeface(字体) 这就是我最终要做的(我创建了一个新的静态方法,该方法通过显示密度返回从资产创建的字体对象)。谢谢