Ich versuche, eine Slideshow zu machen, wenn ich auf einen Button klicke, ImageView zeigt alle Bilder/Zeichen aus Integer - Bildern [] einzeln nacheinander mit einer eingestellten Intervallgeschwindigkeit an, die ich aus den Radiobuttons (3 Auswahlmöglichkeiten) auf dem Bildschirm.Wie werden mehrere Bilder nacheinander in ImageView in einem festgelegten Intervall mit AsyncTask geladen?
Ich versuche, Bild für Bild ohne AsyncTask zu zeigen, mit dem folgenden, aber es zeigt nur das letzte Bild und keine Zeitverzögerung zwischen den einzelnen Bildern.
for (Integer p:pics)
{
iv.SetImageResource(p);
SystemClock.sleep(500);
}
der folgende Code ist, was ich bisher habe, muss ich auf dem Boden des AsyncTask helfen auf, wie
public class PhotoAlbum extends Activity
{
static final int intSlow = 3000;
static final int intMed = 1000;
static final int intFast = 500;
ImageView iv;
int interval;
Integer pics[] = {
R.drawable.img1,
R.drawable.img2,
R.drawable.img3,
R.drawable.img4,
R.drawable.img5,
R.drawable.img6
};
RadioButton rbSlow;
RadioButton rbMedium;
RadioButton rbFast;
Button mAutoButton;
private int currentImage = 0;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_photo_album);
iv = (ImageView) findViewById(R.id.imageView);
iv.setImageResource(pics[currentImage]);
rbSlow = (RadioButton) findViewById(R.id.radioSlow);
rbMedium = (RadioButton) findViewById(R.id.radioMedium);
rbFast = (RadioButton) findViewById(R.id.radioFast);
mAutoButton = (Button) findViewById(R.id.buttonAuto);
mAutoButton.setOnClickListener(AutoButtonChangeImageListener);
}
private View.OnClickListener AutoButtonChangeImageListener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
AutoPicsTask.execute();
}
};
private class AutoPicsTask extends AsyncTask<Integer, Void, Integer>
{
if (rbSlow.isChecked())
{
interval = intSlow;
} else if (rbMedium.isChecked())
{
interval = intMed;
} else
{
interval = intFast;
}
@Override
protected Integer doInBackground(Integer... params)
{
for (Integer p : pics)
{
SystemClock.sleep(interval);
}
return null;
}
protected void onPostExecute(Integer ...value) {
iv.setImageResource(value[0]);
}
}
}
Leider in einem festgelegten Intervall Zeit eins nach dem anderen Bild zu erreichen, ich bin wirklich neu in AsyncTask.
Dies ist eine Zuordnung mit dem, was wir bisher gelernt haben. Wir haben nicht gelernt, wie man "handler", timer, runOnUiThread(), erstellen einen Thread, void run(), postDelayed(), animieren, die ich sehe einige der Post suggerate zu verwenden, um ein Bild zu einem Zeitpunkt zu erreichen .
danke im voraus.
'Dank in advance.'. Sagen Sie nicht, dass Sie diese schlechte Angewohnheit im Verlauf gelernt haben. – greenapps