2011-01-05 12 views
15

Tôi mới làm quen với chương trình android nhưng tôi có khá nhiều kinh nghiệm về lập trình blackberries.invalidate() bên trong ứng dụng android của chủ đề

Tôi đã tạo một ứng dụng có lớp hoạt động (main.java) và một lớp chế độ xem (game.java).

Bên trong lớp chế độ xem, tôi có một số ảnh bitmap được vẽ lên màn hình. Tôi đã tạo một chuỗi và tôi đang di chuyển các hình ảnh xung quanh trong chuỗi. Tuy nhiên khi tôi gọi invalidate() bên trong luồng nó không bao giờ vẽ lại màn hình.

Bạn không thể làm mất hiệu lực() màn hình từ một chuỗi? Tôi biết thread đang chạy và invalidate đang được gọi, nó chỉ không bao giờ thực hiện các thay đổi trên màn hình.

Trả lời

26

Bạn phải sử dụng View.postInvalidate() nếu bạn gọi từ chuỗi không phải là giao diện người dùng. Theo tài liệu:

public void postInvalidate() Từ: Nguyên nhân API Level 1

một vô hiệu xảy ra trên một chu kỳ tiếp theo thông qua vòng lặp sự kiện. Sử dụng tính năng này để vô hiệu hóa Chế độ xem từ chuỗi không phải giao diện người dùng.

+0

Wow quá dễ dàng ... Tôi đã tìm kiếm 30 phút qua về cách thực hiện và tôi chưa bao giờ gặp phải postInvalidate(). – Dave

+1

Vâng, một số chức năng có thói quen xấu của việc biến mất từ ​​tài liệu khi bạn tìm kiếm chúng;) – maid450