我有两个标签的活动。两个选项卡使用不同的片段当某个特定事件发生时,如用户点击项目,我将在同一活动中打开另一个片段。
我知道如何动态添加片段,我也知道如何设置它的动画。
在这里,我如何在我的活动中将片段添加到frameLayout
:
transaction.setCustomAnimations(R.animator.object_slide_in_up, R.animator.activity_hold)
transaction.add(R.id.flSellerHome, fragment)
transaction.commit()
在模拟器和新手机中一切正常。我已经使用api 25进行了模拟器测试,它现在可以正常闪烁发生,当我用真实设备测试它时,api 23闪烁一点,所以它没有影响,之后当我用api 19测试它时,它闪烁太多了。
所以我的问题是做动画的最佳做法。
我动态添加的第三个片段包含recylerview,其中包含来自本地db的大约20个项目,我还在后台线程中完成了db fatching。
主线程无负载。 recyclelerview也很简单,有一个Image和三个文本。
图像也是使用Glide加载的,而且我还有滑动的覆盖功能**
任何帮助表示赞赏..
答案 0 :(得分:8)
我发现问题在于recyclerview数据更新。
我在后台线程中加载数据,但是当通知recyclerview时,它会停留很短的时间。
所以我所做的就是。我延迟了数据加载的时间与动画相同。
我不知道这是好主意还是坏主意。但是我的项目为时已晚,所以我使用了这种解决方法。
答案 1 :(得分:1)
我想给你的答案写评论,但我没有足够的代表,但我想尝试给你一些建议,对不起。
我正在后台线程中加载数据,但是当通知recyclerview时,它会停留很短时间。
在点击并显示简单的ProgressBar后尝试开始加载,加载数据后,隐藏进度条,将信息设置为片段,然后显示片段。然后,您将获得附加时片段所需的所有数据,并将其(数据)放入适配器。
它必须看起来很好。
答案 2 :(得分:-3)
如果仅针对API 19及更低版本发生,则可能是设备缺乏性能。
也许问题不是来自碎片和动画,而是来自另一个减慢UI线程的功能。根据功能,我的意思是您的片段一起通信的方式。他们共享大量数据吗?还是重量级数据?如果是这样,您应该使用异步任务或线程。
祝你好运!