Làm việc với Custom Font trong Android O
Trong bài viết này, mình sẽ giới thiệu cho các bạn cách thiết lập môi trường để hỗ trợ phiên bản Android O preview, và làm thế nào để tạo ra text tự động co giãn để phù hợp với cấu hình màn hình hiện tại. Qua ví dụ này, chúng ta sẽ thấy được cách Android O làm việc với custom fonts như nào. Thêm ...
Trong bài viết này, mình sẽ giới thiệu cho các bạn cách thiết lập môi trường để hỗ trợ phiên bản Android O preview, và làm thế nào để tạo ra text tự động co giãn để phù hợp với cấu hình màn hình hiện tại. Qua ví dụ này, chúng ta sẽ thấy được cách Android O làm việc với custom fonts như nào.
Thêm custom fonts vào Project
Đã bao giờ bạn muốn làm một đoạn cụ thể của văn bản nổi bật? Hoặc bạn muốn dùng một phông chữ tùy chỉnh để làm hoàn hảo hơn ứng dụng của bạn ?
Trong khi có rất nhiều lợi ích khi sử dụng phông chữ tùy chỉnh, thì cách thực hiện chúng trong Android lại không hề đơn giản, yêu cầu bạn phải sử dụng một thư viện hoặc tạo một custom view.
Rất may, làm việc với phông chữ tùy chỉnh trong Android nay dễ dàng hơn nhiều, phông chữ tùy chỉnh sẽ được thiết lập để trở thành một loại tài nguyên hỗ trợ đầy đủ trong Android O. Điều này có nghĩa rằng việc thêm một phông chữ tùy chỉnh để ứng dụng của bạn sẽ đơn giản như thêm bất kỳ tài nguyên khác , chẳng hạn như image và text.
Android O hỗ trợ cả 2 định dạng .otf (OpenType) và .ttf (TrueType). Có rất nhiều trang web cung cấp các loại phông chữ miễn phí, vì vậy dành một vài phút tìm kiếm Google cho đến khi bạn tìm thấy một phông chữ mà bạn thích nhé.
Khi chúng ta thử nghiệm với các tính năng mới Android O, không quá quan trọng phông chữ bạn sử dụng, nhưng khi bạn đang tìm kiếm cho các phông chữ để sử dụng trong các phiên bản phát hành ứng dụng của bạn sau đó, bạn nên luôn luôn kiểm tra các điều khoản và điều kiện của font chữ đó. Vì một nguồn tài nguyên cho miễn phí để tải về, không tự động có nghĩa là không có những hạn chế về làm thế nào bạn có thể sử dụng và phân phối lại (vấn đề bản quyền ), vậy hãy luôn luôn kiểm tra cẩn thận các font sẽ dùng.
Bạn cũng nên xem xét mục đích, nội dung của ứng dụng của bạn và đối tượng mục tiêu, như phông chữ khác nhau truyền tải thông điệp khác nhau. Nếu bạn đang thiết kế một ứng dụng để giúp mọi người hoàn thành tờ khai thuế của họ, người dùng của bạn có thể gặp khó khăn để có tư vấn tài chính và pháp lý của ứng dụng của bạn nghiêm túc nếu nó được phân phối trong một phông chữ lạ và lập dị!
Một khi bạn đã tìm thấy một phông chữ bạn muốn làm việc với, tải về và giải nén nó. Tại thời điểm này, bạn nên kiểm tra tên file của font chữ cho các ký tự không hợp lệ, cơ bản bất cứ điều gì đó không phải là a-z chữ thường, 0-9 hoặc dấu gạch dưới. Nếu font chữ có kí tự lạ, ANdroid Studio sẽ gặp lỗi.
Khi bạn có tệp phông chữ của bạn (s), bạn sẽ cần một nơi để lưu trữ chúng:
- Click chuột phải app/res và chọn New > Android resource directory.
- Mở dropdown menu và chọn font.
- Chọn font theo File name.
- Chọn OK.
- Kéo và thả font vào folder res/font.
Sử dụng custom font
Bạn có thể sử dụng custom font bằng thuộc tính của XML android:fontFamily
<TextView android:text="This is some text" android:layout_awidth="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/doublefeature"/>
Bạn cũng có thể sử dụng custom font bằng cách tạo style trong app :
<style name=“headlineFont" parent="@android:style/TextAppearance.Small"> <item name="android:fontFamily">@font/doublefeature</item> </style>
Nếu bạn muốn sử dụng custom font trong code, bạn có thể tạo một phương thức getFont(int) như sau :
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.LinearLayout.LayoutParams; import android.graphics.Typeface; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout linearLayout = new LinearLayout(this); TextView ProgrammaticallyTextView = new TextView(this); ProgrammaticallyTextView.setText("This is some text"); //Reference your custom font// Typeface typeface = getResources().getFont(R.font.doublefeature); ProgrammaticallyTextView.setTypeface(typeface); linearLayout.addView(ProgrammaticallyTextView); this.setContentView(linearLayout, new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); } }
Tạo Font Family
Đôi khi bạn giải nén một thư mục phông chữ và khám phá nhiều phiên bản của cùng một phông chữ, chẳng hạn như một phiên bản in nghiêng, hoặc phông chữ với độ đậm nhạt khác nhau.
Nếu bạn đang sử dụng nhiều phiên bản của cùng một phông chữ, bạn có thể nhóm chúng lại với nhau thành một Font Family. Một Font Family cơ bản là một tập tin XML dành riêng nơi bạn xác định mỗi phiên bản của font chữ, cùng với phong cách và thuộc tính liên quan của nó.
Để tạo một Font Family :
- Hãy chắc chắn rằng bạn đã thêm tất cả các file font vào thư mục res/font của dự án của bạn.
- Kích chuột phải vào thư mục res/font của dự án của bạn, và sau đó chọn New > Font resource file.
- Cung cấp cho tập tin này một cái tên, và sau đó nhấn OK.
- Mở file XML này và xác định tất cả các phiên bản khác nhau của phông chữ này, cùng với style và thuộc tính của chúng, ví dụ:
<?xml version="1.0" encoding="utf-8"?> http://schemas.android.com/apk/res/android"> <font android:fontStyle="normal" android:fontWeight="400" android:font="@font/doublefeature_regular" /> <font android:fontStyle="italic" android:fontWeight="400" android:font="@font/doublefeature_italic" /> <font android:fontStyle="bold" android:fontWeight="400" android:font="@font/doublefeature_bold" /> </font-family>
Và rồi sử dụng tới bất kì font nào bằng cách sử dụng thuộc tính android:fontFamily. VÍ dụ :
android:fontFamily="@font/doublefeature_bold"