2017-01-19 3 views
0

좀 더 구체적으로 흰색 원, 내부 Bitmap을 채우기 위해 노력하고있어비트 맵

enter image description here

이미지를 이해하기 위해 배경을 회색으로 변경했습니다.

나는이 방법을 사용하지만, 내가 원하는 것을하지 않습니다 ..

public static Bitmap getRoundedBitmap(Bitmap bitmap) 
{ 
    final Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); 
    final Canvas canvas = new Canvas(output); 

    final int color = Color.WHITE; 
    final Paint paint = new Paint(); 
    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 
    final RectF rectF = new RectF(rect); 

    paint.setAntiAlias(true); 
    canvas.drawARGB(0, 0, 0, 0); 
    paint.setColor(color); 
    canvas.drawOval(rectF, paint); 
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); 
    canvas.drawBitmap(bitmap, rect, rect, paint); 

    bitmap.recycle(); 

    return output; 
} 

답변

1

난 당신이 타원형 색상과 Color.WHITE를 대체 ALPHA = 0 시도를 (가 페인트에 사용하는 색상을 추측 1.0f, 1.0f, 1.0f, 1.0f). 그 문제를 해결하는 경우 말해,하고 한 번 봐 걸릴 : SRC_IN를 들어,이 경우 What does PorterDuff.Mode mean in android graphics.What does it do?

을 : [사 * 다가, 사우스 캐롤라이나 * 다]가

+0

감사합니다. 'PorterDuff.Mode.DST_OVER'가 내 문제를 해결했습니다. –

+0

안녕하세요. 좋은이. – NicoBerrogorry

-1

(안드로이드 레퍼런스에서 PorterDuff.Mode를 촬영) 다음은 XML로 만든 도형을 사용하는 예제입니다.

1) 드로어 블 리소스 폴더를 오른쪽 클릭하고 새로운 드로어 블 리소스 파일을 생성하십시오.

2) 다음 코드를 붙여 넣습니다. 이것은 당신이 원했던 백그라운드와 꽤 비슷한 모양을 가진 드로어 블 리소스를 생성합니다.

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <size android:width="50dp" android:height="50dp"/> 
      <solid android:color="@android:color/darker_gray"/> 
     </shape> 
    </item> 
    <item> 
     <shape android:shape="oval"> 
      <size android:width="50dp" android:height="50dp"/> 
      <solid android:color="@android:color/white"/> 
     </shape> 
    </item> 
</layer-list> 

3) 레이아웃에서 리소스를 사용하십시오. 내 자리 표시 자 Android 체크 박스를 '틱'리소스 파일로 대체하십시오.

<RelativeLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/highlight_circle"> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:src="@android:drawable/checkbox_on_background"/> 
</RelativeLayout> 
+0

비트 맵이 리소스가 아닌 ... –

+0

원하는 것을 명확하게 할 수 있습니까? 보기에서 사용하기 위해 비트 맵을 원/회색 배경으로 배치하려고합니까? – Charlie

+0

아니요, 저는 Bitmap (첫 번째 이미지)을 가지고 있고 그것을 두 번째 이미지와 같은 흰색 원으로 포장하고 싶습니다. 그러나 리소스 파일이 아닌 다른 Bitmap이 필요합니다. –

관련 문제