2013-04-05 1 views
0

사용자 정의보기의 스크린 샷을 만들려고 시도하는 동안 IllegalArgumentException : width and height must be >0이 표시됩니다. 여기에 내가 쓴 것입니다 :사용자 정의보기의 스크린 샷을 찍는 동안 IllegalArgumentException이 발생했습니다.

bitmap = loadBitmapFromView(v1);//v1 the custom view I want to picture. 
public static Bitmap loadBitmapFromView(View v) { 
Bitmap b = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);     
Canvas c = new Canvas(b); 
v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height); 
v.draw(c); 
return b; 
} 

예외가있는 줄 다음 next_act 버튼 코드

+0

이 코드는 어디에 있습니까? 어떤 방법으로? 어디서 전화 했니? – Simon

+0

위의 코드는 호출 할 전화 번호 및 방법입니다. – user2137817

+0

번호 프로그램에서이 코드는 어디에 있습니까? onCreate(), 커스텀 메소드에서? 코드는 어떻게 호출됩니까? – Simon

답변

0

폭의 스크린 샷 코드가보기 후 실행 물론 Bitmap b = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
가 나타났다되고, LayoutParams의 높이는 FILL_PARENT과 같은 상수 일 수 있으며 음수입니다.

당신이 사용할 수있는 뷰의 측정 치수를 얻으려면 :

v.getMeasuredWidth() and v.getMeasuredHeight() 

그러나, 당신이 계신에 의존하고 뷰를 측정되었는지 여부.

스크린 샷을 찍기 전에 뷰를 그릴 때까지 기다리는 것이 더 합리적 일 것입니다. 그러나 사용 사례에 대해 더 자세히 설명해야합니다.

+0

나는 이미 이것을 시도했다 : v.measure (MeasureSpec.makeMeasureSpec (0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec (0, MeasureSpec.UNSPECIFIED)); 비트 맵 b = Bitmap.createBitmap (v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888); 하지만 같은 예외가 있습니다 – user2137817

+0

일부 값을 v.measure()에 전달하려고 시도 했습니까? 예 : display = getWindowManager(). getDefaultDisplay(); v.measure (display.getWidth(), display.getHeight()); – Ryan

+0

쓸 때 : 디스플레이 표시 = getWindowManager(). getDefaultDisplay(); eclipse에서 getWindowManager의 이름을 변경하라고 알리는 오류가 발생했습니다. – user2137817

관련 문제