3
Canvas
의 사용자 정의보기가 있습니다. 이 캔버스를 사용하여 비트 맵을 표시 한 다음 터치시 비트 맵을 그릴 수 있습니다. 비트 맵을로드하면 뷰 크기가 훨씬 커지고 전체 비트 맵 (카메라로 찍은 사진)을 볼 수 없습니다. 크기가 조정 된 비트 맵을 만든 다음 캔버스에 그리려고했지만 비트 맵 크기가 작고 캔버스가 전체 레이아웃 공간을 차지하고 있습니다. xml 레이아웃이 아니라 프로그래밍 방식으로이 뷰를 추가하고 있습니다. ,Android 사용자 정의보기 : 비트 맵을 감싸는 캔버스 크기 설정
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
}
그래서 : 내가보기에이 설정되어 있지만 작동하지 않은 :
fdvImage = new ImageEditingView(this, b);
RelativeLayout.LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.CENTER_IN_PARENT, 1);
fdvImage.setLayoutParams(lp);
을이 내보기 생성자 :
public ImageEditingView(Context c, Bitmap b) {
super(c);
this.setMinimumHeight(0);
mBitmap = Bitmap.createScaledBitmap(b, b.getWidth()/2, b.getHeight()/2, true);
mCanvas = new Canvas(mBitmap);
}
과 onDraw
에 나는이 있습니다 제 질문은 : 비트 맵이 작아도 캔버스가 모든 레이아웃 공간을 차지하는 이유는 무엇입니까?
정점 대신 무엇을 넣어야합니까? 이 꼭지점을 만드는 방법? – nikmin
정점 설명 편집 –
이 괜찮습니다,하지만 하나의 문제가 있습니다. 뷰는 onCreate에서 만들어 지므로 이미지에 있어야하는 너비와 높이가 없습니다. 보기가 상대 레이아웃 내부에 추가되지만 onCreate에서 호출되기 때문에 너비와 높이를 가져올 수 없습니다. – nikmin