Android 系列 5.1使用自定义字体

来源:互联网 发布:嵌入式无人机软件 编辑:程序博客网 时间:2024/05/29 16:50
5.1使用自定义字体


问题
Android设备上的字体范围非常小。你想要更好的东西。

在资源/字体中安装TTF或OTF版本的字体(如果需要,创建此目录)。在代码中,从“asset”创建一个字体并调用View的setTypeface()方法。你完成了!
讨论
您可以为应用程序提供一个或多个字体。我们还没有发现一个文档化的方法来安装系统范围的字体。小心巨大的字体文件,因为他们将与您的应用程序下载,增加其大小。
您的自定义字体格式应为TTF或OTF(TrueType或OpenTypeFace,一个TTF扩展名)。您需要在项目中的资源下创建fonts子目录,并在那里安装字体。
虽然可以仅使用XML引用预定义的字体,但不能使用XML引用自己的字体。这可能有一天会改变,但现在android:typeface属性的内容模型是一个只包含正常,sans,serif和monospace的XML枚举!因此,你必须使用代码。
有几个Typeface.create()方法,包括:
•create(String familyName,int style);
•create(TypeFace family,inst style);
•createFromAsset(AssetManager mgr,String path);
•createFromFile(File path);
•createFromFile(String path);
你可以看到这些应该如何工作。参数“style”就像在Java中一样,是表示字体的类中定义的几个常量之一,这里是Typeface。示例5-2中的代码使用createFromAsset()方法,因此我们不必担心字体位置。您可以使用列表中最后两个表单,使用绝对路径将多个位置共享的字体提供到/ sdcard中。在这种情况下,请记住在AndroidManifest.xml文件中请求权限以读取SD卡!
您可以使用列表中的前两个表单创建内置字体及其变体的表示形式。
我使用了来自SoftMaker Software GmbH的好的Iceberg字体。此字体受版权保护,我没有权限重新分发它,所以当您下载项目并要运行它,您将需要在assets / fonts / font-demo.ttf安装一个TrueType字体文件。注意,如果字体缺失,createFromAsset()方法将返回null;在线版本的代码提供错误处理。如果字体无效,Android将默认忽略它并使用内置字体。

在这个演示中,我们提供两个文本区域,一个使用内置衬线字体,一个使用自定义字体。它们在main.xml中定义并添加了各种属性(参见示例5-1)。

实例5-1。 XML布局与字体规范

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:id="@+id/PlainTextView"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/plain"android:textSize="36sp"android:typeface="serif"android:padding="10sp"android:gravity="center"/><TextViewandroid:id="@+id/FontView"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/nicer"android:textSize="36sp"android:typeface="normal"android:padding="10sp"android:gravity="center"/></LinearLayout>

例5-2显示了源代码。
实例5-2。 设置自定义字体

public class FontDemo extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);TextView v = (TextView) findViewById(R.id.FontView);Typeface t = Typeface.createFromAsset(getAssets(),"fonts/fontdemo.ttf");v.setTypeface(t, Typeface.BOLD_ITALIC);}}

1.找到要使用您的字体的视图。
2.从一个Typeface类的静态create()方法创建一个Typeface对象。
3.将字体消息发送到View的setTypeface方法。
如果一切顺利,运行应用程序应该如图5-1。


图5-1。 自定义字体

0 0
原创粉丝点击