我有一个 ListView 在其行中包含 TextViews。在某些行上,我希望 TextView 一起闪烁,我的意思是同时打开/关闭。任何想法如何同步它们?
我的应用程序与 Android 8 API 兼容,所以 ObjectAnimator 不适合我。
在我目前的实现中,我得到了一个奇怪的行为——不仅文本视图闪烁不同步,而且当我滚动时,有时我会看到 TextView 快速闪烁几次,就像动画在 FF 上运行然后稳定在正常速率上一样。
这是我的代码:
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
if (convertView == null) {
LayoutInflater inflater = getLayoutInflater();
convertView = inflater.inflate(R.layout.rowt, parent, false);
holder = new Holder(convertView);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
ListRowUID data = (PollsListRowUID) getItem(position);
if (data != null) {
holder.dateTextView.setText(data.Date);
if (data.Date.equals(holder.inProgressText)) // turn the animation on/off
holder.dateTextView.setAnimation(holder.blink);
else
holder.dateTextView.setAnimation(null);
holder.favoritesTextView.setText("" + data.FavoritesNum);
holder.favoritesImageView.setImageResource(data.MarkedAsFavorite ? R.drawable.favorite_full_small : R.drawable.favorite_empty_small);
}
return (convertView);
}
private class Holder {
public Holder(View convertView) {
dateTextView = (TextView) convertView.findViewById(R.id.dateTextView);
inProgressText = convertView.getResources().getString(R.string.in_progress);
favoritesTextView = (TextView) convertView.findViewById(R.id.favoritesTextView);
favoritesImageView = (ImageView) convertView.findViewById(R.id.favoritesImageView);
blink = new AlphaAnimation(0.0f, 1.0f);
blink.setDuration(500);
blink.setStartOffset(20);
blink.setRepeatMode(Animation.REVERSE);
blink.setRepeatCount(Animation.INFINITE);
}
TextView dateTextView;
TextView favoritesTextView;
ImageView favoritesImageView;
String inProgressText;
Animation blink;
}