2012-04-22 16 views
5

Chúng tôi có một ứng dụng dành cho iOS mà ám một số lượng lớn văn bản: http://itunes.apple.com/br/app/biblia-sagrada/id370178518?mt=8của Android để CoreText

Chúng tôi sử dụng CoreText để làm cho văn bản và cung cấp cho người dùng khả năng để thay đổi định dạng, font-size và mặt chữ.

Chúng tôi đang cố gắng chuyển sang Android nhưng tôi không chắc liệu có thay thế cho CoreText trong Android hay không.

Trả lời

5

Tương đương với CoreText của iOS trong Android là các API drawText, một phần của lớp Canvas, Canvas.drawText(), Canvas.drawPosText(), v.v. xem javadoc cho Canvas để biết thêm chi tiết. Các API đồ họa này sử dụng Skia bên dưới.

Các chức năng mà các API đồ họa cung cấp này không giống với chức năng của iOS, nói không có CTFramesetter tương đương giúp bạn bố cục văn bản và xử lý ngắt dòng cho bạn. Với các API drawText, bạn chỉ có thể vẽ một dòng tại một thời điểm, bạn sẽ phải tự xử lý các ngắt dòng, Nó giống như sử dụng CTTypesetter trong iOS. Để đặt văn bản, hãy xem Paint.breakTextPaint.measureText.

Để thay đổi kích thước phông chữ & khuôn mặt phông chữ, bạn có thể đặt thuộc tính liên quan trong đối tượng Paint, được chuyển thành tham số cuối cùng cho các API drawText.

Snippet:

Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
paint.setTextSize(14); 
String text = "Hello world!"; 
canvas.drawText(text, 0, 100, paint); 

Lưu ý: Các hệ tọa độ được sử dụng trong các API Android drawText là từ left-top góc.

1

TextView có thể xử lý "khả năng thay đổi định dạng, kích thước phông chữ và phông chữ", thông qua các chuỗi có thể quét được. Xem gói android.text.style để biết các hiệu ứng khác nhau mà bạn có thể áp dụng.

Về "số lượng lớn văn bản", hãy bọc TextView trong một số ScrollView.

Bạn luôn có thể quay lại sử dụng WebView, cung cấp cho bạn khả năng WebKit đầy đủ để hiển thị HTML, nếu cần.

+1

Trên iOS, CoreText cho biết số lượng văn bản chính xác sẽ hiển thị trên một khung nhất định. Tính năng này rất, vì ứng dụng có thể đặt một số khung được đặt trên một ScrollView, phân trang văn bản. TextView có thể làm tương tự trên Android không? – javsmo

+0

@javsmo: Không phải là tôi biết. Văn bản được phân trang mà tôi đã thấy trên Android là với trình đọc sách điện tử, sẽ sử dụng HTML và 'WebView'. – CommonsWare

+1

@CommonsWare, không thực sự, hầu hết người đọc sách điện tử đều sử dụng canvas và API drawText, tôi đã từng triển khai trình đọc sách điện tử, mọi thứ sẽ dễ kiểm soát hơn với API drawText. – neevek

Các vấn đề liên quan