我想在我的应用程序中显示横幅(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的行为会像下面一样改变,
图片开始缓慢移动并快速结束。
我不知道我在哪里失踪。我想放慢速度。请帮我解决这个问题。
答案 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”解决了我的问题。