我的情况如下:我的应用正在打开,活动已创建,根片段及其子片段已创建。子片段包含NestedScrollView
,我要滚动一下,然后使用彩色动画闪烁一个列表项。
问题是滚动效果很好,但是胺化效果不好,因为列表项的视图未附加到窗口,并且在附加时我会收到事件,这意味着listItemView.addOnAttachStateChangeListener()
对我不起作用,.onViewAttachedToWindow()
从未调用。请在下面查看我的代码。
仅当由Intent打开应用程序时,才会出现此问题,并且应从应用程序启动时进行滚动和刷新操作。否则,当用户照常打开应用程序时,列表项已成功附加,并且一切正常。
final View viewFocusFinal = viewFocus;
if (viewFocusFinal != null) {
binding.scroll.postDelayed(new Runnable() {
@Override
public void run() {
// scroll to item
binding.scroll.smoothScrollTo(0, viewFocusFinal.getBottom() +200);
// flashing
if (viewFocusFinal.isAttachedToWindow()){
animateViewBackground(viewFocusFinal);
} else {
viewFocusFinal.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
@Override
public void onViewAttachedToWindow(View view) {
Log.d(TAG, "focusReminder onViewAttachedToWindow");
animateViewBackground(view);
}
@Override
public void onViewDetachedFromWindow(View v) {}
});
}
}
}, 300);
}