adapterViewFlipper 实现跑马灯效果使用动画出现的问题

adapterViewFlipper 实现跑马灯效果先上效果图

首先使用AdapterViewFlipper创建布局


    <AdapterViewFlipper
        android:id="@+id/avf"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

给AdapterViewFlipper创建适配器 和以前使用ListView一样 继承BaseAdapter

public class TextAdapter extends BaseAdapter {
   private  String[] lst;

    public TextAdapter(String[] lst) {
        this.lst = lst;
    }

    @Override
    public int getCount() {
        return lst == null ? 0 : lst.length;
    }

    @Override
    public Object getItem(int position) {
        return lst[position];
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
//        TextView tv = new TextView(parent.getContext());
//        tv.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
//        tv.setText(lst.get(position));
        FlipperViewHolder holder;
        if (convertView == null) {
            holder = new FlipperViewHolder();
            convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_flipper, null);
            holder.tv = (TextView) convertView.findViewById(R.id.flipper_tv);
            holder.iv = (ImageView) convertView.findViewById(R.id.flipper_iv);
            convertView.setTag(holder);
        } else {
            holder = (FlipperViewHolder) convertView.getTag();
        }
        holder.tv.setText(lst[position]);
        convertView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(parent.getContext(), lst[position], Toast.LENGTH_SHORT).show();
            }
        });

        return convertView;
    }

    class FlipperViewHolder {
        TextView tv;
        ImageView iv;
    }

}

在使用的时候 特别注意使用动画效果时 一定要用属性动画 若使用Tween动画会报异常unknown animator name translater
在res 建立animator文件夹 然后创建上下滚动动画
flipper_in


<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
                android:duration="600"
               android:interpolator="@android:anim/accelerate_decelerate_interpolator"
                android:propertyName="y"
                android:valueFrom="-100"
                android:valueTo="0"
                android:valueType="floatType"/>

flipper_out


<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
                android:duration="600"
                android:interpolator="@android:anim/accelerate_decelerate_interpolator"
                android:propertyName="y"
                android:valueFrom="0"
                android:valueTo="100"
                android:valueType="floatType"/>

**说明:**anim文件夹下存放tween animation和frame animation;xml文件里只有scale、rotate、translate、alpha、set五个标签;在代码中使用AnimationUtils.loadAnimation()方法加载;使用mView.setAnimation(mAnimation)为mView加载动画;使用mView.startAnimation()开启动画;

animator文件夹下存放property animation,即属性动画,xml文件里有animator、objectAnimator和set三个标签;在代码中使用AnimatorInflater.loadAnimator()方法加载动画;使用mAnimation.setTarget(mView)为mView加载动画。使用mAnimation.start()开启动画

源码可以点击这里github链接

你可能感兴趣的:(android)