行に TextViews を含む ListView があります。一部の行では、TextView を一緒に点滅させたいと思います。つまり、同時にオン/オフします。それらを同期する方法はありますか?
私のアプリは Android 8 API と互換性があるため、ObjectAnimator はオプションではありません。
現在の実装では、奇妙な動作が発生します。テキストビューの点滅が同期されないだけでなく、スクロールすると、アニメーションが FF で実行され、通常の速度で安定するように、TextView が数回すばやく点滅することがあります。
これが私のコードです:
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;
}