2013-10-29 23 views
10

Tôi gặp phải một số sự cố với Android Canvas khi vẽ đường dẫn. Trường hợp của tôi là tôi có bố cục tương đối giống như chế độ xem bản đồ (không sử dụng google api hoặc thứ gì đó tương tự). Tôi phải vẽ một đường dẫn lên khung cảnh đó.Android Canvas không vẽ Đường dẫn khi điểm của Đường dẫn ra khỏi chế độ xem

canvas.drawPath(polyPath, borderPaint); 

Tôi cũng phải vẽ loại khác như hình tròn, đa giác bằng canvas. Mỗi lần chúng tôi phóng to hoặc thu nhỏ, chúng tôi tính toán lại đường dẫn để phù hợp với mức thu phóng. Khi sử dụng api cũ như android 2.3.3, không có vấn đề gì cả. Nhưng đối với api mới hơn như android 4.x, khi chúng tôi phóng to, có điểm có vị trí ngoài chế độ xem hiển thị (như -300, -300 chẳng hạn). Sau một lúc phóng to, vùng hiển thị chỉ hiển thị một phần nhỏ của đường dẫn của tôi. Và rồi đột nhiên toàn bộ con đường biến mất. Nếu chúng tôi thu nhỏ, nó sẽ xuất hiện trở lại. Nó giống như canvas stop rendering (đối tượng khác vẫn còn hiển thị như biểu tượng) Tương tự với hình tròn, hình bầu dục hoặc đa giác.

Vì vậy, tôi không chắc liệu có bất kỳ thay đổi nào về cách vẽ canvas không? Có điều gì tôi thiếu về việc vẽ bằng canvas không?

Trả lời

14

Thêm dòng này trong việc khởi tạo các view

setLayerType(View.LAYER_TYPE_SOFTWARE, null); 

cũng xem hướng dẫn này cho cấp phần cứng hỗ trợ API

google API

Img A

Img B

+2

Cảm ơn bạn rất nhiều! Đây chính xác là nguyên nhân của vấn đề của tôi. Tôi đã thêm một số mã dòng để kiểm tra phiên bản API trước khi gọi phương thức này. Và bây giờ mọi thứ hoạt động tốt trở lại. – mameo

+1

Bạn vừa ngăn tôi đập đầu tôi qua một bức tường ... – Guardanis

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