2010-05-04 2 views
1

복잡한 사용자 정의보기 - 사진 콜라주가 있습니다.사용자 정의보기 - 비 대화식 일 때 다시 그리기를 피하십시오.

관찰되는 것은 UI 상호 작용이 발생할 때마다보기가 다시 그려지는 것입니다.

이전 활동으로 돌아가려면 "뒤로"단추를 클릭 할 때보기의 다시 그리기가 발생하기 때문에보기의 전체 다시 그리기 (예 : 캐싱 된 UI 사용)를 피할 수 있습니다.

API와 웹을 탐색하면서 메소드 -을 발견했지만 효과적으로 사용하는 방법을 알지 못합니다.

어떻게 효과적으로 사용합니까?

나는 사용자 윤곽선에 대해 윤곽선이있는 here과 관련된 다른 문제가 있습니다.

답변

2

getDrawingCache를 사용하는 것보다 나은 방법을 찾았습니다.

자연스러운 캔버스의 드로잉과는 별도로 on-draw 메서드에서 메모리 전용 캔버스에 그립니다.

Bitmap cacheBmp = Bitmap.Create(....); 
Canvas cacheCanvas = new Canvas(cacheBmp); 


void onDraw(Canvas c) 
{ 
    if(updateDueToInteraction) 
    { 
    c.drawXXX(...); 
    cacheCanvas.drawXXX(...); 
    } else 
    { 
    c.drawBitmap(cacheBmp, 0, 0); 
    } 
} 
0

우선보기는 캐시 사용이 가능하도록 setDrawingCacheEnabled(true) 메소드를 사용해야합니다. 그런 다음 getDrawingCache(boolean) 메서드를 사용하여보기를 나타내는 Bitmap을 반환 할 수 있습니다. 그런 다음 해당 비트 맵을 수동으로 그릴 수 있습니다.

setDrawingCacheEnabled(true) 메서드를 호출하여 캐싱을 사용하도록 설정하지 않은 경우 전에 buildDrawingCache()으로 전화해야합니다. 완료되면 destroyDrawingCache()으로 전화하십시오.

안녕!

+0

안녕 Casidiablo, 당신의 응답을 감사합니다. 업데이트/새로 고침이 자주 발생하는 경우 시나리오에서 이와 같은 캐시를 사용하는 것이 좋습니다. 또는 무엇이 보여야 할 필요가 있는지를 아는 경우에만 적용 할 수 있습니다 - 역동적이지만 한 번 정의 된 것입니다! –

관련 문제