2013-08-16 2 views
0

У меня есть приложение слайд-шоу изображений, которое позволяет пользователю выбирать из множества анимаций в настройке активности, поэтому я использовал SharedPreferences, чтобы достичь этого, когда я запустил приложение, но он показывает только первое изображение и быстро выходит приложение без силы закрыть, им новый для разработки Android, и я думаю, что им что-то не хватает в моем коде,слайд-шоу со многими проблемами с анимацией

поэтому, пожалуйста, помогите исправить это, спасибо.

MainActivity.java

public class MainActivity extends Activity { 

public int currentimageindex=0; 
Timer timer; 
TimerTask task; 
ImageView slidingimage; 

private int[] IMAGE_IDS = { 
     R.drawable.one, R.drawable.two, R.drawable.three,R.drawable.four,R.drawable.five, 
     R.drawable.six,R.drawable.seven, R.drawable.eight, R.drawable.nine, 

     }; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final Handler mHandler = new Handler(); 

    // Create runnable for posting 
    final Runnable mUpdateResults = new Runnable() { 
     public void run() { 

      AnimateandSlideShow();    
     } 
    }; 

    int delay = 1000; // delay for 1 sec. 

    int period = 8000; // repeat every 4 sec. 

    Timer timer = new Timer(); 

    timer.scheduleAtFixedRate(new TimerTask() { 

    public void run() { 

     mHandler.post(mUpdateResults); 
    } 

    }, delay, period);    
} 

public void onClick(View v) { 

    finish(); 
    android.os.Process.killProcess(android.os.Process.myPid()); 
    } 

private void AnimateandSlideShow() { 

SharedPreferences getPrefs = PreferenceManager 
     .getDefaultSharedPreferences(getBaseContext()); 

boolean animation_two = getPrefs.getBoolean("animation_two", true);    
boolean animation = getPrefs.getBoolean("animation", false); 
boolean animation_one = getPrefs.getBoolean("animation_one", false);   

if (animation_two == true) { 
    slidingimage = (ImageView)findViewById(R.id.ImageView3_Left); 
    slidingimage.setImageResource(IMAGE_IDS[currentimageindex%IMAGE_IDS.length]); 

    currentimageindex++; 

    Animation rotateimage = AnimationUtils.loadAnimation(this, R.anim.custom_anim); 

     slidingimage.startAnimation(rotateimage); 
     finish(); 
}else if(animation_one == true) { 
    slidingimage = (ImageView)findViewById(R.id.ImageView3_Left); 
    slidingimage.setImageResource(IMAGE_IDS[currentimageindex%IMAGE_IDS.length]); 

    currentimageindex++; 

    Animation rotateimage = AnimationUtils.loadAnimation(this, R.anim.fade_in); 

     slidingimage.startAnimation(rotateimage); 

       finish(); 

}else if (animation == true) { 
    slidingimage = (ImageView)findViewById(R.id.ImageView3_Left); 
     slidingimage.setImageResource(IMAGE_IDS[currentimageindex%IMAGE_IDS.length]); 

     currentimageindex++; 

     Animation rotateimage = AnimationUtils.loadAnimation(this, R.anim.fade_in2); 

      slidingimage.startAnimation(rotateimage); 
       finish(); 

    } else if(animation_two == false && animation == false && animation_one == false){ 
    slidingimage = (ImageView)findViewById(R.id.ImageView3_Left); 
    slidingimage.setImageResource(IMAGE_IDS[currentimageindex%IMAGE_IDS.length]); 

    currentimageindex++; 

    Animation rotateimage = AnimationUtils.loadAnimation(this, R.anim.fade_in2); 

    slidingimage.startAnimation(rotateimage); 
    finish(); 
} 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // TODO Auto-generated method stub 
    switch (item.getItemId()) { 

    case R.id.action_settings: 
     Intent p = new Intent("com.test.demo.SETTING"); 
     startActivity(p); 
    break; 

     } 
return false; 
} 
} 

ответ

0

Перестановка свой код и он будет работать нормально, как показано ниже:

public class MainActivity extends Activity { 

public int currentimageindex=0; 
Timer timer; 
TimerTask task; 
ImageView slidingimage; 

private int[] IMAGE_IDS = { 
    R.drawable.one, R.drawable.two, R.drawable.three,R.drawable.four,R.drawable.five, 
    R.drawable.six,R.drawable.seven, R.drawable.eight, R.drawable.nine, 

    }; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final Handler mHandler = new Handler(); 
// Create runnable for posting 
    final Runnable mUpdateResults = new Runnable() { 
     public void run() { 

      AnimateandSlideShow();    
     } 
    }; 

    int delay = 1000; // delay for 1 sec. 

    int period = 8000; // repeat every 4 sec. 

    Timer timer = new Timer(); 

    timer.scheduleAtFixedRate(new TimerTask() { 

    public void run() { 

     mHandler.post(mUpdateResults); 
    } 

    }, delay, period);    

}  

private void AnimateandSlideShow() { 

    SharedPreferences getPrefs = PreferenceManager 
      .getDefaultSharedPreferences(getBaseContext()); 

    boolean animation_two = getPrefs.getBoolean("animation_two", true);    
      boolean animation = getPrefs.getBoolean("animation", false); 
      boolean animation_one = getPrefs.getBoolean("animation_one", false); 

if (animation == true) { 
    slidingimage = (ImageView)findViewById(R.id.ImageView_slide); 
    slidingimage.setImageResource(IMAGE_IDS[currentimageindex%IMAGE_IDS.length]);  
    currentimageindex++; 
    Animation rotateimage = AnimationUtils.loadAnimation(this, R.anim.custom_anim);    
     slidingimage.startAnimation(rotateimage); 

}else if(animation_one == true) { 
    slidingimage = (ImageView)findViewById(R.id.ImageView_slide); 
    slidingimage.setImageResource(IMAGE_IDS[currentimageindex%IMAGE_IDS.length]);  
    currentimageindex++;   
    Animation rotateimage = AnimationUtils.loadAnimation(this, R.anim.fade_in);   
     slidingimage.startAnimation(rotateimage); 

}else if (animation_two == true) { 
    slidingimage = (ImageView)findViewById(R.id.ImageView_slide); 
    slidingimage.setImageResource(IMAGE_IDS[currentimageindex%IMAGE_IDS.length]);  
    currentimageindex++; 
    Animation rotateimage = AnimationUtils.loadAnimation(this, R.anim.fade_in2);  
     slidingimage.startAnimation(rotateimage); 

}else if(animation == false && animation_one == false && animation_two == false){ 
    slidingimage = (ImageView)findViewById(R.id.ImageView_slide); 
    slidingimage.setImageResource(IMAGE_IDS[currentimageindex%IMAGE_IDS.length]);  
    currentimageindex++; 
    Animation rotateimage = AnimationUtils.loadAnimation(this, R.anim.fade_in2);   
     slidingimage.startAnimation(rotateimage); 
} 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
// Inflate the menu; this adds items to the action bar if it is present. 
getMenuInflater().inflate(R.menu.main, menu); 
return true; 
    } 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
// TODO Auto-generated method stub 
switch (item.getItemId()) { 

case R.id.action_settings: 
    Intent p = new Intent("com.test.demo.SETTING"); 
    startActivity(p); 
break; 

    } 
return false; 
} 
} 

надежду помочь вам

Смежные вопросы