-
Title:
02-12 Fixing_Overdraw_with_Canvas_API
-
Description:
02-12 Fixing_Overdraw_with_Canvas_API
-
Bây giờ chúng ta cùng
trở lại với Android Studio.
-
Xem lại tài nguyên
cho DroidCardsView.
-
Xin nhắc lại, đây là
giao diện tùy chỉnh.
-
Nhớ là nó nằm trong giao diện tùy chỉnh,
ta dựng các thẻ chơi xếp chồng.
-
Ví dụ, mỗi thẻ có ảnh
bitmap của chính nó
-
và ta vẽ chúng lên màn hình bằng cách
ghi đè phương thức onDraw.
-
Bây giờ xin nhớ rằng, việc ghi đè
phương thức onDraw
-
thì Android không thể tối ưu hóa
quá trình kết xuất giao diện này
-
nên công việc của nhà phát triển
là phải cắt từng thẻ
-
như nó hiển trên màn hình
để tránh việc vẽ thừa thãi.
-
May mắn thay, bộ lớp cơ sở API cho đúng
những phương thức chúng ta cần để vẽ thẻ
-
một cách hiệu quả hơn.
-
Cùng xem tài liệu này.
-
Chúng ta cùng dùng phương thức
canvas.clipRect để cải tiến mã.
-
Chúng ta sẽ sử dụng biến kiểu Variant
tạo 4 tham số dạng Float.
-
Chúng ta cùng trở lại
Android Studio.
-
Chúng ta cùng tinh chỉnh thẻ xếp chồng
vậy nên giảm việc phải vẽ quá nhiều.
-
Tôi sẽ sử dụng tính năng rất hữu ích
trong Android Studio này để gọi
-
một hiển thị khác, nên bạn có thể
xem trạng trái trước và sau của mã.
-
Chúng ta ở bảng so sánh
các hiển thị, và hãy quan sát,
-
chú ý kĩ vào phương thức onDraw,
phương thức mà chúng ta đang ghi đè
-
Chúng ta có trạng thái cũ
của vòng lặp For ở bên trái
-
nhưng hãy tập trung vào những cải tiến
mà chúng ta sẽ tạo ở bên phải.
-
Giờ, chúng ta lặp qua các thẻ
và xem từng bước cải tiến.
-
Số 1, đầu tiên, chúng ta sẽ
tính toán vị trí của thẻ.
-
Sau đó chúng ta cần gọi
hàm canvas.save
-
Hàm này sẽ lưu trạng thái
của canvas đã tồn tại
-
Nói cách khác,
-
nó duy trì trạng thái hiện tại của
màn hình trước khi ta làm clipRect.
-
Khi chúng ta gọi
phương thức clipRect
-
đơn giản là chúng ta thực hiện
một số phép hình học nhất định
-
Khi ta truyền các tham số này,
ta đơn giản yêu cầu hệ thống
-
vẽ một phần của thẻ mà
chúng ta muốn nhìn thấy
-
Chắc rồi, phần còn
lại lẽ bị ẩn đi
-
Giờ thì, chỉ những phần của thẻ
nằm trong khoảng giới hạn
-
mà chúng ta vừa
đặt ra mới được vẽ.
-
Cuối cùng, chúng ta sẽ gọi
phương thức canvas.restore,
-
phương thức này sẽ chuyển Canvas
lại trạng thái không bị cắt
-
Nói cách khác,
-
chúng ta sẽ khôi phục khoảng bị ẩn
mà ta đã đặt lúc gọi phương thức clipRect
-
Và chúng ta sẽ lặp vòng này
cho tất cả bộ bài trừ lá trên cùng.
-
Cụ thể, chúng ta sẽ xử lí
-
thẻ cuối cùng khác với
các lá còn lại ở dưới.
-
Với cái này thì không
cần phải xén hình
-
nên chúng ta sẽ vẽ cả lá.
-
Bạn có thể thấy điều đó
qua câu lệnh này.
-
Hãy tạo mã đã được cải tiến
-
nếu giảm chồng điểm ảnh
-
ta giảm rất nhiều hình vẽ thừa
-
Được rồi, tuyệt vời
-
Như bạn thấy đây, giảm được
việc vẽ thừa rất nhiều.
-
Tôi vọng đã làm rõ với bộ API Canvas,
chúng ta có một cách
-
để vẽ rất hiệu quả khi làm việc
với các hiển thị tùy chọn.
-
Nếu bạn muốn khám phá
thêm về bộ API Canvas,
-
hãy xem tài liệu hướng đầy đủ
trong phần ghi chú của giáo viên.
-
Các hiển thị như thế này rất tuyệt,
nó có thể giúp chúng ta tạo ra
-
trải nghiệm người dùng (UX) độc đáo
và hấp dẫn, nhưng nhớ khai báo
-
để giúp Android kết xuất các hiển thị
một cách đẹp mắt hiệu quả
-
Mỗi khi bạn tạo một hiển thị tùy chọn,
hãy nhớ kiểm tra tình trạng vẽ thừa
-
hãy sẵn sàng khôi phục nó,
phương thức clipRect.
-
Được rồi, rất tốt.
-
Quay lại với Colt để
biết về hơn về hiệu suất