我的应用包含一个包含更多图片的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
方法上的视图。请帮忙..欢迎任何想法。
答案 0 :(得分:0)
ViewFlipper有方法showNext和showPrevious,通过它我们可以更改当前显示的子节点,获取当前显示的子节点,使用getDisplayedChild它将返回当前显示的子节点的索引。
只需使用以下方法显示第n个元素:
private void display(int n)
{
int index=viewFlipper.getDisplayedChild();
while(n<index)
{
viewFlipper.showPrevious();
index--;
}
while(n>index)
{
viewFlipper.showNext();
index++;
}
}
答案 1 :(得分:0)
我已经像你一样完成了没有动画的问题,只替换了viewflipper。你可以在动画属性上放置不同的动画。放置这种类型的xml布局。
<ViewFlipper android:id="@+id/vf1" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_margin="3dp">
<RelativeLayout android:layout_width="wrap_content"
android:id="@+id/RLF1" android:background="@drawable/block_purpal"
android:layout_height="wrap_content">
</RelativeLayout>
<RelativeLayout android:layout_width="wrap_content"
android:id="@+id/RLB1" android:gravity="center" android:background="@drawable/block_purpal"
android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content" android:id="@+id/textView1"
android:gravity="right"
android:layout_height="wrap_content" />
</RelativeLayout>
</ViewFlipper>
设置延迟时间:
private static final long DELAYTIME = 1000;
放置视图鳍状肢的clicklistener
Message msg = new Message();
msg.what = 1;
delayHandler.sendMessageDelayed(msg, DELAYTIME);
vFilpper1.showNext();
最后加上这个: public Handler delayHandler = new Handler(){
@Override
public void handleMessage(Message message) {
super.handleMessage(message);
switch (message.what) {
case 1:
try {
vFilpper1.showPrevious();
} catch (Exception e) {
e.printStackTrace();
}
break;
so on other viewflipper..
同时访问Documention 如果你认为这不是更好的主意,那么请转到:
how to check previous value in android of viewflipper
http://mobileorchard.com/android-app-development-view-filpper-and-sliding-drawer/