2011-07-20 18 views
7

Tôi có một số phương pháp trong Chế độ xem của tôi để sửa đổi một số hình dạng được vẽ khi được gọi. Trong Java để đảm bảo thành phần được cập nhật, tôi sẽ gọi repaint(). Có điều gì đó sẽ đảm bảo chế độ xem của tôi được cập nhật chính xác không?Làm cách nào để cập nhật Chế độ xem Android khi sửa đổi?

Tôi đã đọc ở đâu đó gọi số invalidate() theo phương pháp onDraw() sẽ giữ cho mọi thứ được cập nhật và do đó tôi không cần phải có một số thứ như repaint() trong các phương pháp sửa đổi hình dạng được vẽ.

Điều này có đúng không, hoặc có điều gì khác tôi phải làm không?

EDIT

Để thêm vào một ví dụ, một phương pháp mà tôi gọi theo quan điểm của tôi là:

public void setLineThickness(int thickness) { 
    aLineThickness = thickness; 

    if(aLineThicness > 1) 
     //repaint();  - Okay in Java but not in Android 

} 

Trả lời

16

Calling invalidate() sẽ cho xem nó cần phải vẽ lại bản thân (gọi onDraw) đôi khi trong tương lai. Vì vậy, nếu bạn thay đổi một cái gì đó trong quan điểm của bạn, giống như độ dày dòng, gọi invalidate() sau khi nó. Bằng cách đó bạn biết quan điểm của bạn cuối cùng sẽ được cập nhật.

Tất cả mã vẽ của bạn nên được thực hiện trong onDraw() và các phương pháp khác của bạn sẽ chỉ thay đổi trạng thái của chế độ xem, sau đó sẽ được sử dụng để vẽ, sau khi bạn gọi invalidate().

+0

nếu tôi theo bạn một cách chính xác, tôi nên gọi 'invalidate()' trong phương thức 'setLineThickness' của tôi? – StartingGroovy

+1

Nếu bạn muốn người dùng của bạn không phải lo lắng về việc phải gọi nó, thì có. Tôi sẽ đặt nó trong đó (làm cho nó là dòng cuối cùng trong phương pháp) –

+0

Cảm ơn bạn, tôi sẽ cung cấp cho một thử và xem nó như thế nào – StartingGroovy