2016-05-04 6 views
0

У меня проблема с прозрачным CircleView (который расширяет ImageView и является квадратом). Я сделал круговое изображение, переводимое через мой CircleView. Проблема, с которой я сталкиваюсь, заключается в следующем:Android: ViewGroup фоновая прозрачность

Серый фон, который вы видите, RelativeLayout, я хочу скрыть каждый угол благодаря onDraw моего CircleView, потому что благодаря этой функции я смогу перевести изображение без отображения это вне круга.

@Override 
protected void onDraw(Canvas canvas) { 
    int circleCenter = getHeight()/2; 
    radius = circleCenter; 
    loadBitmap(); 

    if(hideBackground) { 
     Path circlePath = new Path(); 
     circlePath.addCircle(circleCenter, circleCenter, radius, Path.Direction.CCW); 

     circlePath.setFillType(Path.FillType.INVERSE_EVEN_ODD); 
     paint.setColor(0x00000000); 
     paint.setShader(null); 
     canvas.drawPath(circlePath, paint); 
    } else { 
     if (image != null) { 
      radius -= 5; 
      paint.setShader(computeBitmapShader(image)); 
      canvas.drawCircle(circleCenter, circleCenter, radius, paint); 
     } 
    } 
} 

И мой макет, если это необходимо:

<RelativeLayout 
    android:id="@+id/wheel_layout" 
    android:layout_width="wrap_content" 
    android:layout_height="0dp" 
    android:layout_weight="0.45" 
    android:background="#4F4F4F"> 

    <CircleView 
     android:id="@+id/wheel" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

    <TextView 
     android:id="@+id/counter" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:textColor="#FFF" 
     android:text="\?" 
     android:textStyle="bold" 
     android:textSize="66dp" 
     android:gravity="center_vertical|center_horizontal" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

</RelativeLayout> 

Так что я хочу сделать прозрачный фон над фон моего RelativeLayout, у вас есть какие-либо идеи?

ответ

0

Вы должны сделать что-то подобное в вашем onDraw() метод:

final int color = 0xff424242; 
    final Paint paint = new Paint(); 
    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 
    final RectF rectF = new RectF(rect); 
    final float roundPx = bitmap.getHeight()/2; 

    paint.setAntiAlias(true); 
    canvas.drawARGB(0, 0, 0, 0); 
    paint.setColor(color); 
    canvas.drawRoundRect(rectF, roundPx, roundPx, paint); 

    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); 
    canvas.drawBitmap(bitmap, rect, rect, paint); 

Прочитайте это для получения дополнительной информации: PorterDuff

Смежные вопросы