我想在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;
}
答案 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来编排动画。