2013-04-24 1 views
3

캔버스의 크기를 그리기 SCALED 뷰로 스케일하려고하면 뷰가 실제로 크기가 조절되지만 뷰는 잘립니다. (아마 때문에 레이아웃 매개 변수?)캔버스의 캔버스에 뷰가 맞지 않습니다.

public void onDraw(Canvas canvas) { 
    canvas.scale(2f, 2f); 
    view.draw(canvas); 
} 

간단한 이미지 :라는 새로운 된 onDraw 후

enter image description here

이미지, 나는이 버튼을 클릭 예를 들어 :

enter image description here

캔버스의 크기가 조절되면 단추의 크기가 전체 크기 여야합니다. 어떻게 해결할 수있는 아이디어가 있습니까?

p.s.

view.invalidate(); 
view.requestLayout(); 

은 도움이되지 않습니다. 내가보기를 드래그 할 때 내보기 크기의 두 배되고 싶어하기 때문에


나는 MyDragShadowBuilder을 사용하고 있습니다.

private final class MyDragShadowBuilder extends DragShadowBuilder { 

     public MyDragShadowBuilder(View view) { 
      super(view); 
     } 

     @Override 
     public void onDrawShadow(Canvas canvas) { 
      final View view = getView(); 
      if (view != null) { 
       canvas.scale(2f, 2f); 
       view.draw(canvas); 
      } else { 
       Log.e("DragShadowBuilder", "Asked to draw drag shadow but no view"); 
      } 
     } 

는 내가 같은 문제로 실행 WRAP_CONTENT 레이아웃 속성

+0

의 요인에 의해 원래보기를 조정 :) 를 작동하게하는 방법을 발견 먼저 뻗었다. 당신이 크기를 설정하는 방법을 게시하고 onMeasure에 응답하십시오 – njzk2

+0

나는 업데이 트를 만들었습니다 .. – pleerock

+0

문제는 귀하의보기가 원래보기의 크기를 가지고 있습니다. 크기를 조정하기 전에 크기를 크게해야합니다. – njzk2

답변

4

내 절대 레이아웃 구현에 내 시야를 추가 할 수 있습니다. 얼마 후 나는 캔버스는 이미지의 크기를 가지고 있으며, 이미지가있을 때 그 크기가 원래 설정되어 있기 때문에이 4

private static class MyDragShadowBuilder extends View.DragShadowBuilder { 

    private static final int SCALING_FACTOR = 4; 

    public MyDragShadowBuilder(View view) { 
     super(view); 
    } 

    @Override 
    public void onProvideShadowMetrics(Point shadowSize, Point shadowTouchPoint) { 
     View v = getView(); 
     final int width = v.getWidth() * SCALING_FACTOR; 
     final int height = v.getHeight() * SCALING_FACTOR; 
     shadowSize.set(width, height); 
     shadowTouchPoint.set(width/2, height/2); 
    } 

    @Override 
    public void onDrawShadow(Canvas canvas) { 
     canvas.scale(SCALING_FACTOR, SCALING_FACTOR); 
     getView().draw(canvas); 
    } 

} 
+0

canvas.scale (factor, factor) 및 overriding onDrawShadow()가 정확히 제가 누락 된 부분이었습니다! 훌륭하게 작동합니다. – saiyancoder

관련 문제