YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Vietnamese subtitles

← 02-12 Fixing_Overdraw_with_Canvas_API

02-12 Fixing_Overdraw_with_Canvas_API

Get Embed Code
13 Languages

Showing Revision 7 created 02/23/2016 by sp8.

  1. Bây giờ chúng ta cùng
    trở lại với Android Studio.
  2. Xem lại tài nguyên
    cho DroidCardsView.
  3. Xin nhắc lại, đây là
    giao diện tùy chỉnh.
  4. 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.
  5. Ví dụ, mỗi thẻ có ảnh
    bitmap của chính nó
  6. và ta vẽ chúng lên màn hình bằng cách
    ghi đè phương thức onDraw.
  7. Bây giờ xin nhớ rằng, việc ghi đè
    phương thức onDraw
  8. thì Android không thể tối ưu hóa
    quá trình kết xuất giao diện này
  9. nên công việc của nhà phát triển
    là phải cắt từng thẻ
  10. như nó hiển trên màn hình
    để tránh việc vẽ thừa thãi.
  11. 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ẻ
  12. một cách hiệu quả hơn.
  13. Cùng xem tài liệu này.
  14. Chúng ta cùng dùng phương thức
    canvas.clipRect để cải tiến mã.
  15. Chúng ta sẽ sử dụng biến kiểu Variant
    tạo 4 tham số dạng Float.
  16. Chúng ta cùng trở lại
    Android Studio.
  17. 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.
  18. Tôi sẽ sử dụng tính năng rất hữu ích
    trong Android Studio này để gọi
  19. 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ã.
  20. Chúng ta ở bảng so sánh
    các hiển thị, và hãy quan sát,
  21. chú ý kĩ vào phương thức onDraw,
    phương thức mà chúng ta đang ghi đè
  22. Chúng ta có trạng thái cũ
    của vòng lặp For ở bên trái
  23. 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.
  24. Giờ, chúng ta lặp qua các thẻ
    và xem từng bước cải tiến.
  25. Số 1, đầu tiên, chúng ta sẽ
    tính toán vị trí của thẻ.
  26. Sau đó chúng ta cần gọi
    hàm canvas.save
  27. Hàm này sẽ lưu trạng thái
    của canvas đã tồn tại
  28. Nói cách khác,
  29. nó duy trì trạng thái hiện tại của
    màn hình trước khi ta làm clipRect.
  30. Khi chúng ta gọi
    phương thức clipRect
  31. đơn giản là chúng ta thực hiện
    một số phép hình học nhất định
  32. Khi ta truyền các tham số này,
    ta đơn giản yêu cầu hệ thống
  33. vẽ một phần của thẻ mà
    chúng ta muốn nhìn thấy
  34. Chắc rồi, phần còn
    lại lẽ bị ẩn đi
  35. Giờ thì, chỉ những phần của thẻ
    nằm trong khoảng giới hạn
  36. mà chúng ta vừa
    đặt ra mới được vẽ.
  37. Cuối cùng, chúng ta sẽ gọi
    phương thức canvas.restore,
  38. phương thức này sẽ chuyển Canvas
    lại trạng thái không bị cắt
  39. Nói cách khác,
  40. chúng ta sẽ khôi phục khoảng bị ẩn
    mà ta đã đặt lúc gọi phương thức clipRect
  41. Và chúng ta sẽ lặp vòng này
    cho tất cả bộ bài trừ lá trên cùng.
  42. Cụ thể, chúng ta sẽ xử lí
  43. thẻ cuối cùng khác với
    các lá còn lại ở dưới.
  44. Với cái này thì không
    cần phải xén hình
  45. nên chúng ta sẽ vẽ cả lá.
  46. Bạn có thể thấy điều đó
    qua câu lệnh này.
  47. Hãy tạo mã đã được cải tiến
  48. nếu giảm chồng điểm ảnh
  49. ta giảm rất nhiều hình vẽ thừa
  50. Được rồi, tuyệt vời
  51. Như bạn thấy đây, giảm được
    việc vẽ thừa rất nhiều.
  52. Tôi vọng đã làm rõ với bộ API Canvas,
    chúng ta có một cách
  53. để vẽ rất hiệu quả khi làm việc
    với các hiển thị tùy chọn.
  54. Nếu bạn muốn khám phá
    thêm về bộ API Canvas,
  55. hãy xem tài liệu hướng đầy đủ
    trong phần ghi chú của giáo viên.
  56. Các hiển thị như thế này rất tuyệt,
    nó có thể giúp chúng ta tạo ra
  57. trải nghiệm người dùng (UX) độc đáo
    và hấp dẫn, nhưng nhớ khai báo
  58. để giúp Android kết xuất các hiển thị
    một cách đẹp mắt hiệu quả
  59. 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
  60. hãy sẵn sàng khôi phục nó,
    phương thức clipRect.
  61. Được rồi, rất tốt.
  62. Quay lại với Colt để
    biết về hơn về hiệu suất