onDraw 메서드를 재정의하는 사용자 지정보기를 작성하고 있습니다.뷰 패딩을 사용하여 캔버스를 축소하는 방법은 무엇입니까?
이보기 패딩 값으로 캔버스를 계약하는 방법 (onDraw에서 인수로 받음)이 있습니까?
그리고 패딩 자체에 대한 가능한 질문에 대답하십시오 - 제 경우에는 여백을 사용할 수 없습니다. 나는 패딩을 사용할 필요가있다.
onDraw 메서드를 재정의하는 사용자 지정보기를 작성하고 있습니다.뷰 패딩을 사용하여 캔버스를 축소하는 방법은 무엇입니까?
이보기 패딩 값으로 캔버스를 계약하는 방법 (onDraw에서 인수로 받음)이 있습니까?
그리고 패딩 자체에 대한 가능한 질문에 대답하십시오 - 제 경우에는 여백을 사용할 수 없습니다. 나는 패딩을 사용할 필요가있다.
모든보기에는 각 패딩의 값을 제공하는 getPaddingTop/Bottom/Left/Right() 메소드가 있습니다.
당신이 당신의 캔버스에 그릴 때, 당신은 당신이 항상이 범위의 그릴하는지 확인해야합니다
minX = getPaddingLeft()
maxX = getWidth() - getPaddingLeft() - getPaddingRight()
minY = getPaddingTop()
maxY = getHeight() - getPaddingTop() - getPaddingBottom()
편집 :
당신이에 어떤 영역을 제한하려면 캔버스가에 그릴 수, 캔버스에서 다음 호출을 사용해보십시오 :
canvas.clipRect(minX, minY, maxX, maxY, Region.Op.REPLACE);
아무것도 이러한 한계를 벗어난됩니다 ignor됩니다 에드.
캔버스에서 변형 작업 (예 : 번역)을 시작할 때까지 제대로 작동합니다. 일단 시작하면 일이 조금 이상해지기 시작하고 런타임 중에 clipRect를 변경해야 할 수도 있습니다.
을 호출합니다.이 접근법을 사용할 수 없습니다 ... 설명을 단순화하기 위해 그림 그 자체가 제 3 부분 라이브러리에 의해 수행되고 있으며, 실제로 드로잉 범위와 상호 작용할 수는 없습니다. 나는이 도서관에 나의 캔버스를 줄 수 있고, 마술이 일어날 때까지 기다릴 수있다. 따라서 내 질문에 대한 캔버스 계약입니다 ... –
내 대답을 편집 –
좋아, 유망한 것으로 보인다. 나중에 확인해 보겠습니다. –
하나의 옵션은, (패딩없이) 내부 크기의 비트 맵을 만들 라이브러리에 그 전달하고, (캔버스 또 다른 옵션은 접촉을 사용하여 캔버스를 번역하는 것입니다
을에 비트 맵을 그릴 수있다) 왼쪽과 위의 패딩으로 캔버스를 움직이는 매트릭스가 있습니다. 또한 라이브러리가 밑바닥과 오른쪽 패딩 위에 그릴 수 없도록 캔버스를 자르십시오
예, clipRect – pskink