2011-09-13 9 views
4

표면 뷰에서 애니메이션을 얻으려고합니다. 그러나 내 표면 뷰의 배경이 투명하고 마지막 프레임의 픽셀을 지울 수 없습니다. 투명한 표면 뷰에서 일부 애니메이션을 얻을 수 있습니까? 어쩌면 나는보기에서만 '애니메이션'수업을 사용합니다. 감사합니다.Android 표면 뷰 애니메이션


아마도 질문을 명확하게 설명하지 않았을 수 있습니다. 나는 애니메이션을 얻고 싶지만, surfaceview는 마지막 그래프를 리프레시 할 수 없다. 그것은 픽션처럼 보인다.

enter image description here

배경은 투명합니다. 색상이있는 그리기 캔버스를 사용하면 마지막으로 그려진 그래프를 지울 수 있습니다. 그러나 그 배경은 투명하고, 방법은 새로 고침을 달성하지 못합니다. 도와주세요. 감사! 당신은 Z 순서로 상단에 서피스 뷰 SurfaceView를 넣어 가지고 있습니다

Paint clearPaint = new Paint(); 

public MySurfaceView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    this.setZOrderOnTop(true); 
    this.getHolder().setFormat(PixelFormat.TRANSPARENT); 
    clearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); 
} 

public void drawMethod(){ 
    Canvas canvas = this.getHolder().lockCanvas(); 

    canvas.drawPaint(clearPaint); 

    canvas.drawBitmap(yourBitmap, null, yourBitmapRect, null); 

    this.getHolder().unlockCanvasAndPost(canvas); 
} 

:

답변

8

이 시계 다음 코드, 그것은 나를 위해 일의 시작에 canvas.drawColor(Color.BLACK)에 시도 할 수 있습니다 PixelFormat을 투명하게 설정하십시오. 그러면 SurfaceView가 투명 해집니다 (작성한대로이 부분을 투명하게 처리 할 수 ​​있습니다). 그러면 각각의 새로운 그림 앞에 투명한 페인트로 표면을 채워야합니다. 이 "특수"페인트는 다음과 같이 설정해야합니다.

clearPaint.setXfermode(new PorterDuffXfermode(Mode.CLEAR)); 
+0

감사합니다. 당신의 대답은 저에게 중요합니다. –

+0

+1 완벽한 답변. 그것은 나를 위해 잘 작동합니다. – Praveenkumar

+0

좋은 답변입니다! setZOrderOnTop (true)을 절대로 잊지 마십시오! – Lcsky

3

당신은 모든 무승부()

+0

이것은 실제로 Android 설명서 +1에서 권장되는 방법입니다. –