2011-10-16 12 views
0

나는 안드로이드가 새로운데, 청취자없이 슬라이드 쇼를 만들고 싶다. 내 앱을 열고 효과 만있는 애니메이션을보고 싶다. 예제 나 튜토리얼을 찾을 수 없으므로 누구나 나를 도울 수 있습니까? 감사합니다.mouselistener없이 슬라이드 쇼 만들기

+0

당신은 지속적인 슬라이더를 위해 노력하거나 정확하게 당신이 찾고있는 것을 지정하고 있습니까? – blessenm

+0

단지 효과 (예 : XML 효과)가있는 슬라이더를 만들고 무한 시간 반복됩니다. 터치 리스너, 모션 리스너 없음, 효과가있는 일반적인 슬라이드 쇼. –

답변

0

사용자 상호 작용없이 자동으로 수행하려는 작업은 배경 그루브 (backgroud thread)를 사용해야합니다. Android에서는 백그라운드 스레드로 UI를 수정하는 메소드를 호출 할 수 없습니다. 주기적으로 UI를 업데이트 할 계획이라면 AsynchTash을 사용하는 것이 가장 좋습니다.

private class SwitchImagesTask extends AsyncTask<Integer, Integer, Intehger> { 
    protected Long doInBackground(Integer... itemCount) { 
     for (int i = 0; i < itemCount[0]; i++) { 
       try{Thread.wait(1000);}catch(Exception e) {return -1;} 
       publishProgress(i); 
     } 
     return 1; 
    } 

    protected void onProgressUpdate(Integer... progress) { 
      // Display your image here 
    } 

    protected void onPostExecute(Integer result) { 
      // Say goodby to the user 
    } 
} 

슬라이드 쇼 레이아웃에 이미지 뷰를 추가하는 것이 작업을 수행하는 가장 쉬운 방법 아닌 다른 후 하나 개의 이미지를 의미하는 경우와 change는 내용입니다.

0

활동을 호출하면 스레드를 확장하는 내부 클래스의 layout inflator를 사용할 수 있습니다.

public class SlideshowActivity extends Activity { 

private static final int[] mSlides = new int[]{R.layout.layout_a , R.layout.layout_b , R.layout.layout_c}; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    new StartSlideShow().start(); 
} 

class StartSlideShow extends Thread 
{ 
    @Override 
    public void run() { 
     LayoutInflater inflator = SlideshowActivity.this.getLayoutInflater(); 
     for(int inx = 0 ; inx < mSlides.length ; inx++) 
     {    
      try { 
       sleep(1000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      inflator.inflate(mSlides[inx], null); 
     } 
    } 
} 

}

관련 문제