2012-08-15 35 views
16

Phần duy nhất của ứng dụng của tôi vẫn là phần mềm được hiển thị là hiển thị một chế độ xem mà tôi cần vẽ một hình bitmap tròn. Tôi đang sử dụng clipPath để clip bitmap mà tôi cần để render cho hình tròn.Đoạn clip Android tương đương với phần cứng tăng tốc Xem

Tôi hiểu rằng clipPath không phải là phần cứng tăng tốc, nhưng tôi đang tìm một thuật toán cho phép tôi cung cấp chức năng tương đương bằng cách sử dụng tăng tốc phần cứng.

Cụ thể là tôi cần tạo vùng cắt tròn của bitmap nguồn và được hiển thị cho canvas của tôi.

Trả lời

0

Bạn có thể cố gắng này, mặc dù tôi không chắc chắn nó là phần cứng tăng tốc:

trong onCreate:

trong onLayout:

  • tạo một bitmap có cùng kích thước như xem bạn
  • vẽ vòng tròn của bạn bên trên của vải của nó, trong trắng, sử dụng chống bí danh cho một biên giới sạch

trong onDraw:

  • vẽ bitmap với vòng tròn màu trắng trong vải sơn của bạn
  • bây giờ, vẽ bitmap của bạn bên trong vải sơn của bạn bằng cách sử dụng bitmapPaint bạn đã tạo trong onCreate

Các bitmap nên được trả lại bên trong chỉ vòng tròn.

0

Nếu bitmap của bạn không thay đổi nhiều, hãy nén nó một lần vào hình dạng thành bitmap mới, sau đó vẽ bitmap đã cắt bớt trong onDraw của bạn.

Dưới đây là một ví dụ làm thế nào để cắt một vòng tròn từ một nguồn bitmap

Bitmap bitmap = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); 
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
Canvas canvas = new Canvas(bitmap); 
paint.setColor(Color.RED); 
// Draw your shape here 
canvas.drawCircle(cx, cy, radius, paint); 
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));  
canvas.drawBitmap(sourceBitmap, 0, 0, paint); 
1

Nếu bạn phải sử dụng clipPath bạn có thể tắt tăng tốc phần cứng như dưới đây.

<application 
    android:label="@string/application_name" 
    android:hardwareAccelerated="false"> 

Và bạn cũng có thể kiểm soát tăng tốc phần cứng giữa các lớp Ứng dụng, Hoạt động, Cửa sổ và Chế độ xem. Thông tin chi tiết mô tả về điều này Hardware Acceleration article on Android Development web site.

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