2011-02-05 27 views
9

Lớp Canvas Android hỗ trợ một tập hợp các bản vẽ phong phú nguyên thủy - hình tròn, dòng, v.v. Tôi có một ứng dụng sử dụng các biểu đồ này để biểu đồ một số dữ liệu thống kê.Tách độc lập cho các lớp vẽ nguyên bản của lớp Canvas

Sau khi đọc mô tả về http://developer.android.com/reference/android/graphics/Canvas.html#drawLine%28float,%20float,%20float,%20float,%20android.graphics.Paint%29 . . . Tôi không rõ đơn vị tọa độ là gì hoặc cách làm cho thiết bị/độ phân giải độc lập.

Những đơn vị này là gì và "thực hành tốt nhất" là gì để vẽ đường kẻ và hình tròn và hình chữ nhật hoạt động trên nhiều kích thước màn hình và độ phân giải khác nhau? Cảm ơn trước.

Trả lời

4

Tài liệu Android cho biết "Đơn vị vị trí và thứ nguyên là pixel". Sau khi thử nghiệm một lúc, tôi phát hiện ra rằng trước phiên bản 2.0, đơn vị là pixel. Nhưng bắt đầu từ 2.0 đơn vị rất có khả năng nhúng (pixel độc lập thiết bị).

Đối với đoạn mã sau:

Paint paint = new Paint(); 
paint.setColor(Color.RED); 
paint.setStyle(Paint.Style.STROKE); 
paint.setStrokeWidth(0); 
canvas.drawRect(new Rect(1, 1, 319, 319), paint); 

tôi nhận được vuông cùng kích thước phù hợp với độ rộng của màn hình trên 320x480, 480x800, 240x320 và giả lập với 2.0+ Android.

Khám phá này cho phép tôi giải quyết vấn đề: các đường thẳng đứng 1 pixel trên màn hình lớn đôi khi rộng 2 pixel. Đặt chiều rộng nét thành 0 để vẽ các đường 1 pixel độc lập với kích thước màn hình.

Sửa

Sau khi nhận được nhiều kinh nghiệm với Android, tôi cần phải sửa kết luận của tôi. Trên thực tế, có thuộc tính "android: anyDensity" trong thẻ "hỗ trợ màn hình" của AndroidManifest.xml. Thuộc tính này là true theo mặc định. Khi đúng, đơn vị đo là dp, nếu không thì đó là pixel.

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