带有翻译动画的Android ViewFlipper - 无法正常工作

时间:2015-06-11 12:13:01

标签: android-layout android-animation translation viewflipper

我想在我的应用程序中显示横幅(x方向移动的图像)。为此,我使用ViewFlipper与翻译动画。请找到我的以下代码..

我的布局:banner.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
        <ViewFlipper
                android:id="@+id/banner_image"
                android:layout_width="match_parent"
                android:layout_height="258dp" />
</RelativeLayout>

在动画中:in_from_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >

  <translate
    android:duration="3000"
    android:fromXDelta="100%"
    android:fromYDelta="0%"
    android:toXDelta="0%"
    android:toYDelta="0%" />

</set>

Out动画:out_to_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
  <translate android:fromXDelta="0%" android:toXDelta="-100%"
    android:fromYDelta="0%" android:toYDelta="0%"
    android:duration="3000"/>
</set>

我的Java代码

public class BannerView extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.banner);

    ViewFlipper myViewFlipper = (ViewFlipper) findViewById(R.id.banner_image);

    //Setting first image in viewFlipper
    ImageView imageView1 = new ImageView(HomeView.this);
    imageView1.setImageDrawable(getResources().getDrawable(R.drawable.img1));
    myViewFlipper.addView(imageView1);

    //Setting second image in viewFlipper
    ImageView imageView2 = new ImageView(HomeView.this);
    imageView2.setImageDrawable(getResources().getDrawable(R.drawable.img2));
    myViewFlipper.addView(imageView2);
    myViewFlipper.setAutoStart(true);

    //Setting in and out animation
    myViewFlipper.setInAnimation(HomeView.this,R.anim.in_from_right);
    myViewFlipper.setOutAnimation(HomeView.this,R.anim.out_to_left);

    //Starting the view filpper to rotate
    myViewFlipper.startFlipping();
}
}

我的问题是,

当我将进出动画的持续时间设置为“5000”时,ViewFilpper的行为会像下面一样改变,

图片开始缓慢移动并快速结束。

我不知道我在哪里失踪。我想放慢速度。请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

更新:我掀起了一些示例代码,中间有一个大口吃,好像第二个视图被强行移动以赶上第一个视图。经过多次试验和错误,我发现在viewflipper xml属性中设置android:flipInterval =“5000”修复了它。我只能假设默认的flipInterval短于5000,因此问题。

 <ViewFlipper
        android:id="@+id/viewflipper"
        android:layout_width="match_parent"
        android:layout_height="258dp"
        android:flipInterval="5000" >

如果您仍然发现动画不够流畅:

将它放在你的xml中,用于翻译动画:

android:interpolator="@android:anim/linear_interpolator"

然后

android:startOffset="1000" 

到slide_out_to_left,等等,然后再继续。

答案 1 :(得分:0)

感谢您的回复。我找到了解决问题的方法。请在下面找到我的答案。

我已经在xml中更改了插值器,如下所示:

 android:interpolator="@android:anim/decelerate_interpolator"

然后我在我的viewflipper中使用 android:flipInterval =“5000”解决了我的问题。