Мое приложение содержит ViewFlipper с большим количеством изображений. Это автоматическое копирование изображений с использованием некоторых анимаций. Я хочу, чтобы при отображении определенного изображения ViewFlipper переставал скользить, изображение заменялось другим изображением, а затем ViewFlipper, чтобы снова начать переворачивание. Я потратил много времени на это, но он не работает. Я попытался заменить представление и добавить новое представление, но приложение не работает, как оно должно работать. Кто-нибудь работал с ViewFlipper? Кто-нибудь знает, как заменить представление новым?Как заменить вид другим в ViewFlipper
Вот мой код:
vf = (ViewFlipper) findViewById(R.id.details);
vf.setFlipInterval(Integer.valueOf(3 * 1000));
//populate the ViewFlipper with images
vf.setOutAnimation(animFlipOutNext);
vf.setInAnimation(animFlipInNext);
vf.setAutoStart(true);
анимаций, которые я использовал:
animFlipInNext = AnimationUtils
.loadAnimation(this, R.anim.push_left_in);
animFlipInNext.setDuration(2000);
animFlipInNext.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
System.out.println("AnimStart- LeftIn" + " Will be displayed "
+ vf.getDisplayedChild());
imageName = images.listFiles();
for (int i = 0; i < imageName.length; i++) {
if (vf.getCurrentView().getTag().toString()
.equalsIgnoreCase(imageName[i].getName())) {
System.out.println("begin " + imageName[i].getName());
vf.stopFlipping();
} else
System.out.println("NUNUNU");
}
}
@Override
public void onAnimationRepeat(Animation animation) {
System.out.println("AnimRepeat-LeftIn");
}
@Override
public void onAnimationEnd(Animation animation) {
System.out.println("Anim end " + vf.getDisplayedChild());
for (int i = 0; i < imageName.length; i++) {
if (vf.getCurrentView().getTag().toString()
.equalsIgnoreCase(imageName[i].getName())) {
System.out.println("begin " + imageName[i].getName());
videoname = imageName[i].getName().replace("1.jpg", "");
System.out.println("VideoName este " + videoname
+ ".mp4");
bitmap = BitmapFactory.decodeFile(Environment
.getExternalStorageDirectory()
+ "/Images" + "/" + "23Video1.jpg");
img = new ImageView(getBaseContext());
img.setImageBitmap(bitmap);
img.setScaleType(ImageView.ScaleType.FIT_XY);
int nr = vf.getDisplayedChild();
System.out.println("nr view "+nr);
vf.removeViewAt(nr);
vf.addView(img, nr,new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
vf.setDisplayedChild(nr);
vf.setVisibility(View.VISIBLE);
img=null;
//vf.setDisplayedChild(nr);
}
}
}
});
animFlipOutNext = AnimationUtils.loadAnimation(this,
R.anim.push_left_out);
animFlipOutNext.setDuration(2000);
animFlipInPrevious = AnimationUtils.loadAnimation(this,
R.anim.push_right_in);
animFlipInPrevious.setDuration(2000);
animFlipOutPrevious = AnimationUtils.loadAnimation(this,
R.anim.push_right_out);
animFlipOutPrevious.setDuration(2000);
Я пытаюсь заменить вид на onAnimationEnd
метод. Пожалуйста, помогите .. Любая идея приветствуется.
Я использую getDisplayedChild ро получить индекс текущего отображаемого ребенка. Проблема заключается в замене представления. новое изображение не добавлено в viewflipper – Gabrielle
см. мой отредактированный ответ. – jeet