2012-05-17 31 views
5

Tôi có một ứng dụng cho phép người dùng tạo bố cục màn hình phức tạp từ một bộ điều khiển được xác định trước. Sau đó, các điều khiển đó trao đổi với nhau để tạo ra chức năng cuối cùng. Vấn đề tôi thấy là không có vấn đề gì tôi làm điều đó có vẻ như bất kỳ vẽ lại gây ra bởi một sự thay đổi trong một điều khiển là buộc toàn bộ màn hình để vẽ lại (như được thấy bằng cách cho phép "Hiển thị thay đổi màn hình"). Bởi vì tôi đã có rất nhiều điều khiển tùy chỉnh mà không cần nhiều XML phía sau chúng, việc vẽ lại này có thể khá chậm.Làm thế nào để ngừng android vẽ lại toàn bộ màn hình bất cứ khi nào có thay đổi?

Ví dụ: một điều khiển có thể là máy tính được tạo từ một vài bố cục tuyến tính. Khác có thể là một tạo lưới lệnh được tạo động từ bố cục tuyến tính. Mỗi trong số này sau đó được thêm vào bố cục tương đối cha mẹ khi màn hình được tải. Nhấn một phím trên máy tính sẽ buộc lưới lệnh vẽ lại ngay cả khi không có gì thay đổi trong bất kỳ chế độ xem nào của nó.

Tôi đã thử bật tăng tốc phần cứng và thay đổi tất cả các loại lớp của chế độ xem thành LAYER_TYPE_HARDWARE mà không có may mắn.

Làm cách nào để đảm bảo rằng chỉ có một phần phụ cụ thể của màn hình được vẽ lại? Tại thời điểm này, tôi không thực hiện bất kỳ cuộc gọi nào để vô hiệu hóa bản thân, nhưng tôi có các phiên bản nút, bố cục và các thành phần giao diện người dùng có thể sử dụng được của riêng mình, vì vậy nếu tôi cần giảm mức kiểm soát đó ít nhất thì đã có một khung công tác tại chỗ cho nó.

Trả lời

0

này trông khá nhiều như thế này .. Moving Android View and preventing onDraw to be called over and over again tuy nhiên nếu bạn chỉ muốn vẽ một phần, thử gọi invalidate(rect) nơi rect là một Rect mà bạn xác định một khu vực mà sẽ là "vẽ lại", khác hơn so với afaik bạn không thể.

+0

Không hoàn toàn, có lẽ tôi không giải thích rõ. Tôi có một nút trên màn hình. Khi tôi nhấn nút đó, nó sẽ chuyển sang trạng thái nhấn. Điều này, tất nhiên, yêu cầu nút được vẽ lại. Nhưng những gì tôi thấy là toàn bộ màn hình được vẽ lại, không chỉ là nút. Tôi không gọi vô hiệu hóa bản thân mình, chỉ để cho các widget android cơ bản làm điều của nó. Nó phải có thể. Tôi đã chơi với các ứng dụng khác trên thiết bị đã bật Hiển thị thay đổi màn hình và có thể thấy một số ứng dụng chỉ vẽ lại các phần của màn hình trong khi các ứng dụng khác vẽ lại tất cả. Ngay cả ứng dụng của tôi cũng giới hạn khi tôi sử dụng hộp thoại hoặc bánh mì nướng. –

+0

Tôi _do_ có một số phiên bản tùy chỉnh của các nút, bố cục, v.v. nhưng chúng rất đơn giản và tôi không ghi đè bất kỳ chức năng nào xử lý chu trình vẽ. –

Các vấn đề liên quan