2012-08-15 17 views
16

Jedyną częścią mojej aplikacji, która jest nadal renderowana na oprogramowaniu, jest renderowanie jednego widoku, w którym muszę narysować okrągłą bitmapę. Używam metody clipPath do przycinania bitmapy, która jest potrzebna do renderowania do okrągłego kształtu.Dodatek Android clipPath dla akceleracji sprzętowej Zobacz

Rozumiem, że ClipPath nie jest przyspieszany sprzętowo, ale szukam algorytmu, który pozwoliłby mi zapewnić równoważną funkcjonalność przy użyciu przyspieszenia sprzętowego.

W szczególności potrzebuję stworzyć okrągły obszar przycinania źródłowej bitmapy i mieć to renderowane na moim płótnie.

Odpowiedz

0

Można próbować to, choć nie jestem pewien, że jest przyspieszane sprzętowo:

w onCreate:

w onLayout:

  • utworzenia mapy bitowej o tym samym rozmiarze, jak widoku
  • zwrócić krąg wewnątrz w z jego płótna, w kolorze białym, z użyciem anty alias dla czystej granicy

w OnDraw:

  • narysować bitmapę z białym kole w swojej farbą płótna
  • teraz zwrócić bitmapę wewnątrz farbą płótna za pomocą utworzonego w onCreate

bitowa powinna być świadczone tylko wewnątrz kręgu bitmapPaint.

0

Jeśli mapa bitowa nie zmienia się bardzo często, przypnij ją raz do kształtu do nowej bitmapy, a następnie narysuj przyciętą bitmapę w swoim onDraw.

Oto przykład jak clip okrąg z bitmapy źródłowej

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

Jeśli trzeba użyć clipPath można wyłączyć akcelerację sprzętową jak poniżej.

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

Możesz także kontrolować przyspieszenie sprzętowe między warstwami aplikacji, aktywności, okna i widoku. Szczegółowe informacje opisują ten Hardware Acceleration article on Android Development web site.

Powiązane problemy