Một đối tượng kiểu Paint dùng để định nghĩa màu sắc, style dùng để vẽ

Một phần của tài liệu Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android (Trang 32 - 37)

- Một đối tượng Canvas dùng để thực thi lệnh vẽ.

Để làm rõ những khái niệm trên ta tiến hành tạo một lớp CustomView cài đặt lại lớp View của Android để định nghĩa một đối tượng đồ họa mới. Trên đối tượng mới định nghĩa này, ta sẼ tự vẽ ra giao diện mà mình mong muốn.

Xây dựng lớp CustomView

Để tạo một CustomView ta tiến hành tạo một class với nội dung nhƯ sau: package gioi.Android;

import Android.content.Context; import Android.util.AttributeSet; import Android.view.View;

public class CustomView extends View{ public CustomView(Context context){

SUper(contex0);

}

public CustomView(Context context, AttributeSet attrs) { SUDer(ConteXt, attrS);

}

@Override

protected void onDraw(Canvas canvas) {

} }

Lớp CustomView sẽ extend class View của Android để kế thừa lại các phương

thức cũng như các thuộc tính của lớp View. Trong đĩ ta sẽ cài đặt lại 02 phương thức khởi tạo cho lớp CustomView và ghi đè phương thức onDraw(Q) của lớp View, đây chính là phương thỨc sẽ vẽ ra giao diện của CustomView.

Với phương thức khởi tạo public CustomView(Context context) chỉ nhận vào một

tham số là một đối tượng Context. Đây là đối tượng này cho phép truy xuất đến các đối tượng cũng như các dịch vụ của hệ thống. Đối tượng này cần thiết để vẽ một giao diện ra màn hình thiết bị.

Đặng Văn Giỏi - LỚp 508CNT

+

Với phương thức khởi tạo thứ hai: public CustomView(Context context, AttributeSet attrs) cĩ nhận vào thêm một tham số là AttributeSet attrs. Đây là đối tượng chứa các thuộc tính của đối tượng đồ họa sẽ được khởi tạo. Việc tạo phương thức khởi tạo thứ hai là cần thiết nếu bạn mong muốn sử dụng đối tượng đồ họa này trong một file giao diện .xml cĩ chỉ định các thuộc tính như ví dỤ sau:

Cho một file xml cĩ nội dung như sau:

<?xml version=”1.0” encoding="utf-8”?> <LinearLayout xmlns: Android="http://schemas.Android.com/apk/res/Android” Android:orientation="”vertical” Android:layout_width="fill_ parent” Android:layout_height="fill_ parent” > <gioi.Android.CustomView Android:id=”"@+id/graphicView"” Android:layout_width="fill_ parent” Android:layout_height="fill_ parent” > </LinearLayout>

Trong file xml kể trên ta cĩ sử dụng một thẻ cĩ tên niit.Android.CustomView,

đây chính là đối tượng đồ họa ta vừa tạo ra Ở trên. Trong đĩ gioi.Android là packàe cỦa project hiện tại. Thể CustomView Ở trên cĩ ba thuộc tính là

Android:id, Android:layout width và Android:layout height. Ta cĩ thể tạo một

Activity cĩ nội dung là file xml kể trên:

public class main extends Activity { @Override

publïc vọd onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Lúc này Android sẽ tự tạo ra đối tượng CustomView và sử dụng phương thức khởi tạo public CustomView(Context context, AttributeSet attrs) để khởi tạo đối (adsbygoogle = window.adsbygoogle || []).push({});

tượng với các thuộc tính là Androidid, Android:layout width và

Android:layout_height được truyền vào thơng qua đỐi tƯỢng attrs.

Đến đây ta đã tạo xong lớp CustomView, tuy nhiên nếu chạy chƯơng trình Ở bước này ta chỉ được một giao diện trống rỗng. ĐỂ vẽ giao diện cho CustomView ta sẽ tiến hành cài đặt phương thức onDraw() với nội dung như sau:

(Override

protected void onDraw(Canvas canvas) { Paint cPaint = new PaintQ;

cPaint.setColor(Color.RED);

Path cPath = new Path();

cPath.addGircle(100, 100, 20, Direction.CW);

canvas.drawPath(cPath, cPaint);

Như đã đề cập ở mục trên để vẽ ra màn hình ta tạo một đối tượng Paint được

dùng để định nghĩa màu sắc, style... ta cần vẽ ra. Gọi phương thức setColor(...) để

gán màu sắc của nét vẽ cần vẽ ra. Sau đĩ ta tiến hành khai báo một đối tượng Path

để chứa các nét vẽ và gọi phương thức addCircle(...) để thêm một nét vẽ hình trịn vào đối tượng cPath. Sau đĩ gọi canvas.drawPath(cPath,cPaint) để vẽ ra các nét vẽ

được chứa trong đối tược cPath với màu sắc được định nghĩa trong đối tượng

cPaint. Khi thực thi chương trình ta sẽ được kết quả như sau: Xem hình 10.

Như vậy ta đã cĩ lớp Customview, tiếp theo là ta tìm hiểu một số thành phần căn bản của Android.

+ Đối tượng Paint: Đây là đối tượng quy định cách hiện thị của đối tượng đồ họa. Ví dụ như ta muốn vẽ một đường thẳng cĩ đổ bỏng, vẽ đường trịn với màu tùy chọn. Cách khai báo đối tượng như sau.

Paint p = new Paint(Q; p.setColor(Color.RED);

Đặng Văn Giỏi - LỚp 508CNT

+

Ở đây ta khái báo biến p thể hiện lớp Paint và ta đặt cho màu của Paint này là màu đỏ.

+ Đối tượng Color: Color được thể hiện bởi 4 giá trị, đầu tiên là alpha tiếp theo là red, green và blue (ARGB). Mỗi thể hiện gồm 256 giá trị (8 bít) do đĩ một màu cĩ giá trị cao nhất lên tới 32 bít integer. Với Android thuận tiên hơn khi cho phép chúng ta thể hiện giá trị màu bằng một số nguyên thay vì thể hiện theo cách của lớp Color hay dùng. Cách khai báo đối tượng này nhƯ sau.

int color = Color.BLUACK;

Ở đây biến color được gán với màu đen, ngồi ra chúng ta cũng cĩ thể viết theo cách sau

int color = 255; hoặc int color = Color.rgb(255, 0, 0);

+ Đối tượng Canvas: là mỘt lớp quan trỌng trong quá trình xây dựng ứỨng dụng, đặt biệt trong Game. Nếu như lớp Paint cung cấp cho bạn nhưng dụng cụ color, đường nét, đỘ to nhỏ của nét để về thì Canvas cung cấp cho bạn các phương thức để vẽ lên nhỮng gì bạn muốn, đường thẳng, đường trịn, hình chữ nhật...

Ví dụ ta vẽ một chuỗi ký tỰ như sau:

canvas.drawText('Vẽ chuỗi ký tỰ lên Canvas tại vị trí 30,30 với style là biến p”,30,30,p);

+ Đối tượng Rect: Đây là đối tượng cho ta vẽ lên 1 hình chữ nhật, cách khai báo đối tượng này như sau Rect rect = new Rect(); (adsbygoogle = window.adsbygoogle || []).push({});

Ngồi ra Android cịn cung cấp rất nhiều các đối tượng khác để vẽ các thành phần khác nhau, như vẽ ảnh, đường thẳng, đường trịn, hình đa giác...

3.2.2 Chương trình minh họa.

Để hiểu rõ các đối tượng mà Android cung cấp, ta cùng xây dựng một ví dụ nho nhỏ để thấy được cách thể hiện đồ họa của Android. Chương trình minh họa sẽ

thực hiện các chức năng sau.

- _ Vẽ 1 đường trịn cĩ đổ bĩng màu vàng.

Một phần của tài liệu Đề tài: Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android (Trang 32 - 37)