2014-02-11 1 views
1

Я хочу создать слайд-шоу с изображениями, в которых я хочу повторить 5 изображений, чтобы войти в цикл, пока не будет нажата кнопка. Также я хочу получить некоторый эффект между изображениями, чтобы переход выглядел красиво. Я могу создать слайд-шоу, но проблема в том, что он не повторяется. вот мой код:Создание слайд-шоу с 5 изображениями в цикле

public class Slides extends Activity implements OnClickListener { 
    Button button; 
    Boolean goingOn = false; 
    AnimationDrawable animation; 
    private TransitionDrawable trans; 

    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.discolight); 
     final ImageView lights = (ImageView) findViewById(R.id.img); 

     button=(Button)findViewById(R.id.power); 
     button.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if(goingOn) 
       { 
       stopAnimation(); 
       goingOn=false; 
       } 
       else 
       { 
       startAnimation(); 
       goingOn=true; 
       } 
       } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu m) { 
     MenuInflater inf = getMenuInflater(); 
     inf.inflate(R.menu.frontscreenmenu, m); 
     return true; 

    } 

    class Starter implements Runnable { 
     public void run() { 
      animation.start(); 
     } 
    } 

    private void startAnimation() { 
     animation = new AnimationDrawable(); 
     animation.addFrame(getResources().getDrawable(R.drawable.a), 1000); 
     animation.addFrame(getResources().getDrawable(R.drawable.b), 1000); 
     animation.addFrame(getResources().getDrawable(R.drawable.c), 1000); 
     animation.addFrame(getResources().getDrawable(R.drawable.d), 1000); 
     animation.addFrame(getResources().getDrawable(R.drawable.e), 1000); 
     animation.addFrame(getResources().getDrawable(R.drawable.f), 1000); 
     animation.addFrame(getResources().getDrawable(R.drawable.g), 1000); 
     animation.addFrame(getResources().getDrawable(R.drawable.h), 1000); 
     animation.addFrame(getResources().getDrawable(R.drawable.i), 1000); 
     animation.addFrame(getResources().getDrawable(R.drawable.j), 1000); 

     animation.setOneShot(true); 


     ImageView imageView = (ImageView) findViewById(R.id.img); 
     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
       600, 800); 
     params.alignWithParent = true; 
     params.addRule(RelativeLayout.CENTER_IN_PARENT); 

     imageView.setLayoutParams(params); 
     imageView.setImageDrawable(animation); 
     imageView.post(new Starter()); 

    } 

    private void stopAnimation() { 
     animation.stop(); 
    } 
+0

Вместо 'goingOn = false' попробовать с возвратом false и вернуть true nd, сообщите, работает ли он или нет ??? – InnocentKiller

+1

Когда анимация заканчивается, вам нужно дважды щелкнуть по кнопке, чтобы сделать ее перезагрузкой. Вы знаете об этом? – Blackbelt

+0

О, да, ты прав Блэкбелт, я подумал, что посмотрю позже. –

ответ

0

Использование В FrameAnimation для этого

и добавить frameanimatin.setOneShot (ложь);

+0

и как остановить эту анимацию.? –