为List中的部分项目设置动画

时间:2016-08-18 18:40:25

标签: java android user-interface animation

我想在listView中动画部分项目。 动画在代码中描述。

在不重载mainThread的情况下,最好的方法是什么?

 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        StockExchangeModel stockExchangeModel = mStockExchangeModels.get(position);
        ViewHolder holder;

        if (convertView == null){
            convertView = ((LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.item_stock_exchange, parent, false);
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        if (stockExchangeModel.isNeedAnim()){
            // blink color RED
            // wait 0.2s
            // return to start color
            // wait 0.2s
            // blink color RED
            // wait 0.2s
            // return to start color
        }


        holder.value.setText(String.format("%.2f",stockExchangeModel.getValue()));
        holder.change.setText(stockExchangeModel.getChange());
        holder.name.setText(stockExchangeModel.getName());


        return convertView;
    }

1 个答案:

答案 0 :(得分:1)

您可以使用ValueAnimator在颜色之间进行动画处理。

ValueAnimator animator = ValueAnimator.ofInt(0, 255, 0);
animator.setDuration(200).setStartDelay(200L);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator valueAnimator) {
        int color = Color.argb((int) valueAnimator.getAnimatedValue(), 255, 0, 0);
        stockExchangeModel.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
       }
    });
animator.start();

这样可以将您的项目从“原始颜色”,“红色”设置为“原始颜色”。

如果您希望对此进行多次迭代,可以考虑使用AnimationSet来编排动画。