我不明白如何使用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>
Run Code Online (Sandbox Code Playgroud)
我在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;
}
Run Code Online (Sandbox Code Playgroud)
我用按钮浏览图像,我尝试设置动画.似乎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();
}
});
Run Code Online (Sandbox Code Playgroud)
并且动画师被宣布为:
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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
但是当我点击按钮时,我得到一个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();
}
});
Run Code Online (Sandbox Code Playgroud)
和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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
但是在那种情况下我得到了java.lang.ClassCastException:android.animation.AnimatorSet无法强制转换为android.animation.ObjectAnimator
所以我不明白设置和正确使用它并且很难在Internet上找到使用adapterViewFlipper的例子,除了泰语,但我对泰语不太满意......
那么,如何使用adapterViewFlipper动画?
好吧,我终于发现ObjectAnimator是使用adapterViewFlipper声明动画的严格方法.无论如何,它不喜欢标签"<"set">"和"<"/ set">"至少在我写它们时.我没有找到如何声明几个属性动画.我承认我仍然有问题要真正理解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"/>
Run Code Online (Sandbox Code Playgroud)
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"/>
Run Code Online (Sandbox Code Playgroud)
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"/>
Run Code Online (Sandbox Code Playgroud)
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"/>
Run Code Online (Sandbox Code Playgroud)
然后使用动画:
myAdapterViewFlipper.setInAnimation(getActivity(), R.animator.right_in);
myAdapterViewFlipper.setOutAnimation(getActivity(), R.animator.left_out);
myAdapterViewFlipper.showNext();
Run Code Online (Sandbox Code Playgroud)
要么
myAdapterViewFlipper.setInAnimation(getActivity(), R.animator.left_in);
myAdapterViewFlipper.setOutAnimation(getActivity(), R.animator.right_out);
myAdapterViewFlipper.showPrevious();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3405 次 |
| 最近记录: |