我不明白如何使用adapterViewflipper动画。 我在API13中,我在Fragment中使用了一个adapterViewFlipper。
所以在My xml文件中我只有:
<AdapterViewFlipper
android:id="@+id/avfPicturesSite"
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="@drawable/gradientbackground"
>
</AdapterViewFlipper>
我在getView()中动态创建ImageView。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
final ViewHolder viewHolder = new ViewHolder();
view = new ImageView(context);
viewHolder.img = (ImageView) view;
view.setTag(viewHolder);
} else {
view = convertView;
}
ViewHolder viewHolder = (ViewHolder)view.getTag();
viewHolder.img.setImageURI(getItem(position));
return view;
}
我使用按钮浏览图像,我尝试设置动画。似乎sitePicturesFlipper.setInAnimation(Context context,int resourceID)正在等待AnimatorSet。
nextSitePicture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//sitePicturesFlipper.setInAnimation(R.animator.right_in);
sitePicturesFlipper.setInAnimation(getActivity(), R.anim.left_in);
sitePicturesFlipper.setOutAnimation(getActivity(), R.anim.right_out);
sitePicturesFlipper.showNext();
}
});
并且动画师被宣布为:
left_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate android:duration="5000" android:fromXDelta="-100%" android:toXDelta="0%"/>
<alpha android:duration="5000" android:fromAlpha="0.0" android:toAlpha="1.0" />
</set>
right_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate android:duration="5000" android:fromXDelta="0%" android:toXDelta="100%"/>
<alpha android:duration="5000" android:fromAlpha="1.0" android:toAlpha="0.0" />
</set>
但是当我点击按钮时,我得到一个RuntimeException未知的动画师名称:translate!
我也尝试使用ObjectAnimator,就像那样:
nextSitePicture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
sitePicturesFlipper.setInAnimation(getActivity(), R.animator.left_in);
sitePicturesFlipper.setInAnimation(getActivity(), R.animator.right_out);
sitePicturesFlipper.showNext();
}
});
和xml文件是:
left_in2.xml
<?xml version="1.0" encoding="utf-8"?>
<set>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:propertyName="yFraction"
android:valueType="floatType"
android:valueFrom="-1"
android:valueTo="0"
android:duration="600"/>
</set>
right_out2.xml:
<?xml version="1.0" encoding="utf-8"?>
<set>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:propertyName="yFraction"
android:valueType="floatType"
android:valueFrom="0"
android:valueTo="1"
android:duration="600"/>
</set>
但是在那种情况下我得到java.lang.ClassCastException:android.animation.AnimatorSet无法强制转换为android.animation.ObjectAnimator
所以我不明白设置和正确使用它并且很难在Internet上找到使用adapterViewFlipper的例子,除了泰语,但是我对泰语不太满意......
那么,如何使用带有adapterViewFlipper的动画?
答案 0 :(得分:7)
好吧,我终于发现 ObjectAnimator 是使用 adapterViewFlipper 声明动画的最佳方法。 无论如何,它不喜欢标签&#34;&lt;&#34; set&#34;&gt;&#34;和&#34;&lt;&#34; / set&#34;&gt;&#34;至少我写的时候。而且我还没有找到如何声明几个属性动画。我承认我仍然有问题要真正理解Android文档......
如果有人有想法,请等待信息。
因此,为了解决我遇到的第一个问题,在adapterViewFlipper中左右滑动图像的一整套ObjectAnimator是:
left_in.xml,在animator文件夹中声明
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:propertyName="x"
android:valueType="floatType"
android:valueFrom="-1500"
android:valueTo="0"
android:duration="600"/>
right_out.xml
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:propertyName="x"
android:valueType="floatType"
android:valueFrom="0"
android:valueTo="1500"
android:duration="600"/>
right_in.xml
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:propertyName="x"
android:valueType="floatType"
android:valueFrom="1500"
android:valueTo="0"
android:duration="600"/>
left_out.xml
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:propertyName="x"
android:valueType="floatType"
android:valueFrom="0"
android:valueTo="-1500"
android:duration="600"/>
然后使用动画:
myAdapterViewFlipper.setInAnimation(getActivity(), R.animator.right_in);
myAdapterViewFlipper.setOutAnimation(getActivity(), R.animator.left_out);
myAdapterViewFlipper.showNext();
或
myAdapterViewFlipper.setInAnimation(getActivity(), R.animator.left_in);
myAdapterViewFlipper.setOutAnimation(getActivity(), R.animator.right_out);
myAdapterViewFlipper.showPrevious();