Quello che voglio fare è spostare lo sfondo in orizzontale e farlo ripetere all'infinito.Android sposta continuamente lo sfondo con animazione
Ho provato a utilizzare uno ImageSwitcher
con animazione per ottenere questo effetto, ma non è riuscito a farlo funzionare correttamente. Questo è il codice che ho così Farl
public class MainActivity extends AppCompatActivity implements ViewSwitcher.ViewFactory {
private Animation animSlide;
private ImageSwitcher image;
private ImageView imagePop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageSwitcher) findViewById(R.id.image_switcher);
image.setFactory(this);
image.setImageResource(R.drawable.zc06);
Animation in = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left);
in.setDuration(10000);
Animation out = AnimationUtils.loadAnimation(this, android.R.anim.slide_out_right);
out.setDuration(10000);
image.setInAnimation(in);
image.setOutAnimation(out);
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
image.setImageResource(R.drawable.zc06);
}
});
}
}, 0, 10000);
Animation mZoomInAnimation = AnimationUtils.loadAnimation(this, R.anim.zoom_in);
Animation mZoomOutAnimation = AnimationUtils.loadAnimation(this, R.anim.zoom_out);
imagePop.startAnimation(mZoomInAnimation);
imagePop.startAnimation(mZoomOutAnimation);
}
@Override
public View makeView() {
ImageView myView = new ImageView(getApplicationContext());
return myView;
}
}
Perché stai utilizzando le animazioni di visualizzazione? Non dovresti davvero usarli più ... Usa invece la nuova API di animazione. In ogni caso è possibile creare facilmente un'animazione del genere avendo due 'ImageViews' nel proprio layout e traducendoli con un' ValueAnimator'. Vedi la mia risposta per ulteriori informazioni. –