2012-04-19 1 views
1

내 라이브 벽지가 홈 화면 변경시 대부분의 시간을 부드럽게 미끄러지 지 않습니다. 배경 위치에 대한 복잡한 코딩이 없습니다. 단지 onoffsetschanged 메서드에있는 xpixles를 사용하여 배경 무늬의 x 위치를 조정합니다. 가끔은 태양 상승 라이브 벽지 애플 리케이션에서와 마찬가지로 슬라이드. 하지만 다른 시간은 대부분 미끄러 져 움직입니다. 그러나 그것을 묘사하는 방법은 모르지만 정적 인 예리한 움직임과 같습니다. 저 남자들에 대해 어떤 생각이 있니? 최고 감사합니다.라이브 벽지가 홈 화면 변경시 부드럽게 미끄러지지 않음

private void drawS() { 
     final SurfaceHolder holder = getSurfaceHolder();   
     canvas = null; 
     try { 
      canvas = holder.lockCanvas(); 

      if (canvas != null) { 

       background = BitmapFactory.decodeResource(getResources(), 
         R.drawable.background);   
       canvas.drawBitmap(background, mXPixels, mYPixels, null); 

      } 

     } 
     finally { 
      if (canvas != null) { 
       holder.unlockCanvasAndPost(canvas); 
      } 
     } 


     handler.removeCallbacks(runnableS); 

     if (visible) { 

      handler.postDelayed(runnableS, 25); 
     } 
    } 
+0

매우 능통. 너 지금 할 수 있니? –

+0

아니, 나는 여전히 같은 문제가있다 .. 나는 Ivica의 아이디어를 시도했지만 여전히 작동하지 않았다. 나는 우리가 openGL로 전환해야한다고 생각한다. : / – Ali

답변

2

그리기 루틴에서 리소스 생성을 피하십시오.

background = BitmapFactory.decodeResource(getResources(), 
        R.drawable.background);  

을 당신이 당신의 물건을 초기화하고 단지 나중에 배경 비트 맵에 대한 참조를 사용할 때마다 넣어 :립니다() 함수에서이를 제거합니다.

logcat을 살펴보면 drawS()를 호출 할 때마다 많은 자원 또는 자원 관리가 진행되고 있음을 알 수 있습니다 (리소스를위한 메모리 할당, 비트 맵 이미지 디코딩 등). 즉, 당신이 당신의 배경을 그릴 때마다 ...

건배,

이비카

0

은 저도 같은 문제가 발생 이비카 제안에 따라 해결했다. I 표면 생성 부 내부에 비트 맵 생성 줄 이동 :이 슬라이딩 방식으로

public void onSurfaceCreated(SurfaceHolder holder) { 
    super.onSurfaceCreated(holder); 
    mybackground = BitmapFactory.decodeResource(getResources(), R.drawable.mybg); 
} 

내가 같은 문제를 구비하고