MarqueeView
MarqueeView copied to clipboard
开始重影问题,按照下面的解决办法后,第一次进入程序,先是第一条数据,轮播后还是从第一条数据开始
如果不加入 @Override public void onStart() { super.onStart(); L.i("onStart ======="); mMarqueeView.startFlipping(); }
@Override
public void onStop() {
super.onStop();
L.i("onStop =======");
mMarqueeView.stopFlipping();
}
这个代码是没有问题,但是会重影
是的 还是依然会重影
你检查了下代码,startWithList(list)和startFlipping()是不是都调用了。我的问题就是这样的,界面显示时我调用了startFlipping()开启动画。但是在这时候我同样去请求了数据,获得数据后调用了startWithList(list),这就导致重复调用开启动画,导致了重影
你检查了下代码,startWithList(list)和startFlipping()是不是都调用了。我的问题就是这样的,界面显示时我调用了startFlipping()开启动画。但是在这时候我同样去请求了数据,获得数据后调用了startWithList(list),这就导致重复调用开启动画,导致了重影
我取了一个巧,先设置 startWithList("") 然后紧接着设置 startWithList 这样就规避了目前的重影问题
先把所有子view清除,然后清空动画,在停止播放就可以。
mMarqueeView.removeAllViews(); mMarqueeView.clearAnimation(); stopMarquee();
if (MarqueeView.getNotices().isEmpty() && !MarqueeView.getNotices().equals(oldList)) { //避免重复set 重影问题 不等于空 并且 不等于老的数据就替换 tvAutoOfficeAnnounceHeader.startWithList(mSystemMessages); } 确实是这个问题导致的,终极解决方案。
问题原因
你检查了下代码,startWithList(list)和startFlipping()是不是都调用了。我的问题就是这样的,界面显示时我调用了startFlipping()开启动画。但是在这时候我同样去请求了数据,获得数据后调用了startWithList(list),这就导致重复调用开启动画,导致了重影
MarqueeView.getNotices().isEmpty()
MarqueeView.getNotices().isEmpty() 是不等于空的意思吗