2015-02-03 7 views
2

저는 XML 레이아웃의 중간에 캔버스를 표시하는 방법, 즉 Imageview에 캔버스를 표시하는 방법을 모색 중입니다. 해봤지만 비트 맵 null을 반환합니다.레이아웃 중간, 즉 ImageView Android에 캔버스가 있습니까?

Bitmap b = Bitmap.createBitmap(img.getMeasuredWidth(),img.getMeasuredHeight(), Bitmap.Config.ARGB_8888); 
    Canvas c = new Canvas(b); 
    c.drawRect(0, 0, 200, 200, paint); 
+0

xml 레이아웃 중간에 캔버스가 있습니까? 너 무슨 뜻이야? –

+0

중간에 이미지 뷰가 있고 이미지 위에 캔버스를 배치하는 간단한 레이아웃 – Fazal

답변

0

ImageView를 하위 클래스로 만들고 아래의 요구 사항을 onDraw()로 그립니다.

public class CustomImageView extends ImageView{ 

public CustomImageView (Context context) { 
    super(context); 
} 

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    Bitmap Bitmap.createBitmap(img.getMeasuredWidth(),img.getMeasuredHeight(), Bitmap.Config.ARGB_8888); 
    Canvas c = new Canvas(b); 
    c.drawRect(0, 0, 200, 200, paint); 
} 

} 
0

이 코드를 사용하여 비트 맵을 생성하십시오.

public static Bitmap createScaledBitmap(String path, float scale, boolean filtering){ 
     Bitmap src = BitmapFactory.decodeFile(path); 
     int width = (int)(src.getWidth() * scale + 0.5f); 
     int height = (int)(src.getHeight() * scale + 0.5f); 
     return Bitmap.createScaledBitmap(src, width, height, filtering); 
     } 

여기 경로는 이미지의 경로이며, 마지막으로 캔버스에이 크기 조정 된 비트 맵을 넣습니다.

관련 문제