Có vẻ như bạn muốn thử nghiệm với đồ họa 2D - cho điều đó, bạn nên sử dụng Canvas
. Bạn có thể kiểm soát bản vẽ của Canvas thông qua phương pháp invalidate()
, cho Android biết vẽ lại toàn bộ điều kích hoạt phương thức onDraw()
được tùy chỉnh của bạn. Bạn đề cập đến không muốn sử dụng tệp XML, nhưng đó là cách đơn giản nhất để đưa vào Canvas - bạn không cần phải xác định nội dung của nó trong tệp XML, nhưng chỉ cần nói tệp sơ đồ bố trí ở đó. Một cách mạnh mẽ nhưng đơn giản để đặt Canvas trong ứng dụng của bạn là tùy chỉnh Chế độ xem. Ví dụ, bao gồm trong tệp XML của bạn một phần tử <your.package.CustomView android:.../>
. Sau đó, khai báo lớp CustomView extends View
. Bất kỳ loại bản vẽ nào bạn muốn làm, đặt vào phương thức onDraw().
Ví dụ: để vẽ hình chữ nhật, hãy làm như thế này.
//First you define a colour for the outline of your rectangle
rectanglePaint = new Paint();
rectanglePaint.setARGB(255, 255, 0, 0);
rectanglePaint.setStrokeWidth(2);
rectanglePaint.setStyle(Style.STROKE);
//Then create yourself a Rectangle
Rect rectangle = new Rect(left, top, right, bottom) //in pixels
//And here's a sample onDraw()
@Override
public void onDraw(Canvas canvas){
rectangle.offset(2, 2);
canvas.drawRect(rectangle, rectanglePaint);
}
Mỗi lần invalidate() được gọi từ chương trình của bạn, chế độ xem sẽ được vẽ lại và hình chữ nhật di chuyển 2px xuống và sang phải. Lưu ý: việc vẽ lại chỉ xảy ra với chuỗi chính là 'đang chờ'. Nói cách khác, nếu bạn có một vòng lặp gọi là vô hiệu hóa nhiều lần, View sẽ không thực sự được rút ra cho đến khi vòng lặp kết thúc. Bạn có thể giải quyết vấn đề này, nhưng điều đó làm tăng thêm sự phức tạp. Để biết ví dụ về cách thực hiện, hãy xem trò chơi ví dụ về LunarLander từ Google - đó là một trò chơi đơn giản thể hiện Chế độ xem tùy chỉnh, 2 luồng và cách triển khai hoạt ảnh liên tục.
Nguồn
2010-03-29 16:24:29
Hoạt động đẹp, cảm ơn bạn! –