2010-03-10 12 views
1

Android 2.1 및 Eclipse를 사용하고 있습니다.내보기에서 캔버스를 어떻게 재정의 할 수 있습니까?

LinearLayout ll = new LinearLayout(this); 
ll.setOrientation(LinearLayout.VERTICAL); 

LinearLayout.LayoutParams llp = 
    new llp.LayoutParams(250, 250); 

meter1View = new MeterView(this, "Meter 1"); 
ll.addView(meter1View, llp); 
meter2View = new MeterView(this, "Meter 2"); 
ll.addView(meter2View, llp); 
ScrollView scrollView = new ScrollView(this); 
scrollView.addView(ll); 
setContentView(scrollView); 

250 X 250 지금까지 너무 좋은 :

나는 크기가 두 가지 구성 요소와의 LinearLayout을 정의했습니다. 내 에뮬레이터 화면에 두 가지 수직 구성이 나타납니다.

하지만, 내 미터 View 클래스에서의 onDraw에서 캔버스의 크기가 나는 캔버스 크기를 원하는 480

@Override 
protected void onDraw(Canvas canvas) { 
    int w = canvas.getWidth(); 
    int h = canvas.getHeight(); 
    Log.i(TAG, " onDraw, w: " + w + ", h: " + h); 
} 

800으로 내 에뮬레이터 화면의 크기가 250 X이 될 것입니다

250, 그래서이 캔버스를 드로잉 루틴에 전달할 수 있습니다. 지금, 내 드로잉 루틴은 LinearLayout에 의해 정의 된 250x250 비트 맵 외부로 그림이 그려져 있습니다.

캔버스를 변환하여 작업 할 수있는 캔버스 그리기 루틴을 만들 수 있지만, 원래 캔버스를 새 캔버스로 일시적으로 덮어 쓸 수 있다면 더 깨끗합니다.

Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); 
Canvas c = new Canvas(b); 

가 어떻게 나의 새로운 캔버스 뷰 클래스에 의해 생성 된 캔버스를 대체 할 수

은 내가으로 내 자신의 캔버스를 정의 할 수 있음을 이해? 도움이 될 것입니다.

찰스

답변

1

당신이 getWidth()와 getHeight를 통해 모두 사용할 수를보기가 아닌 캔버스의 폭과 높이를 사용해야합니다(). 그런 다음 이러한 치수를 드로잉 루틴에 전달하십시오.

1

캔버스를 바꾸지 말고 대신 클립 고정자를 사용하십시오.

관련 문제