2012-08-13 32 views

Trả lời

15

Từ các tài liệu Android - protected void dispatchDraw (Canvas canvas):

gọi bằng bốc thăm để vẽ các quan điểm con. Điều này có thể bị ghi đè bởi các lớp dẫn xuất để giành quyền kiểm soát ngay trước khi các con của nó được rút ra (nhưng sau khi khung nhìn của nó đã được vẽ).

+0

tại sao dispatchDraw (Canvas canvas) ??? chúng ta có thể sử dụng onDraw (Canvas canvas) thay vì ?? –

+4

Đó là nơi bạn nên làm bản vẽ của mình, vâng. 'vẽ (Canvas canvas)' khởi tạo bản vẽ; 'onDraw (Canvas canvas)' là bản vẽ diễn ra; 'dispatchDraw (Canvas canvas)' là những gì cho trẻ em của 'ViewGroup' được vẽ. – Eric

2

Ví dụ: ViewGroup là phụ huynh của tuyến tính, tương đối-, FrameLayout-, AbsoluteLayout. 1

Vì lớp ViewGroup là trừu tượng, việc tạo trực tiếp một trường hợp là không thể.
Bạn có thể sử dụng 1 từ này, với chức năng:

dispatchDraw(Canvas canvas) 

Vì những lý do không rõ, các lớp 1 sẽ không vẽ với

onDraw(Canvas canvas) 

Vẽ với

dispatchDraw(Canvas canvas) 

là trong Lớp này 1, có thể và thật thú vị khi tạo giao diện người dùng.

Nó sẽ trông như thế này:

///// public class MainActi kéo dài MyLinearLayout. công MainActi (Bối cảnh con ... siêu (tiếp ...) MyLinearLayout kéo dài LinearLayout

@ Override protected void dispatchDraw (Canvas canvas) { canvas.drawColor (Color.YELLOW); ... ///

hoặc bạn bỏ lại để vẽ với

onDraw(Canvas canvas) 

mở rộng trong MainActivity "View" hoặc tham khảo nó trong một lớp học extern như thế này:

MyMelIsDrawing extends View 
    onDraw(Canvas canvas) 
     //now draw...