每当我搜索我遇到这个"android 5(L)活动过渡只有可用API >= 21.
这很好,但我可以看到一些类似的应用程序QuickPic和google inbox使用类似的过渡和还致力于降低API,因此这个应用程序是如何做这样的事情?
我做了什么?
1)很多搜索:)
2)玩ActivityOptionsCompat那个只适用于api> = 21,像这样:
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionView, DATA.EXTRA_PASSED_JSON);
Intent intent = new Intent(activity, PhotoViewerActivity.class);
intent.putExtra(DATA.EXTRA_PASSED_JSON, json);
ActivityCompat.startActivity(activity, intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)
编辑(问题标记为重复):在这种情况下,它与其他问题不同,因为我说有其他应用程序在较低的api中进行此转换,我想知道他们是如何做到的.
滚动时有没有办法为RecyclerView的元素设置动画?
我看了看DefaultItemAnimator和RecyclerView.ItemAnimator,但动画似乎如果数据集已经改变了只叫,请纠正我,如果我错了.
我什么RecyclerView.ItemAnimator.animateMove()时候打电话有点困惑?我在该课程中添加了一些断点,但没有一个断点停止我的应用程序.
但是回到我的问题,我如何为RecyclerView设置动画?我希望某些元素具有另一个不透明度,取决于一些自定义规则.
我做了一些更多的动画似乎动画移动正是我正在寻找的.这些方法是从dispatchLayout().这是该方法的javadoc:
layoutChildren()周围的包装器,用于处理由布局引起的动画更改.动画假设有五种不同类型的项目:
PERSISTENT:项目在布局之前和之后可见
REMOVED:项目在布局之前可见并且被应用程序删除
ADDED:项目在布局之前不存在并且由应用程序
DISAPPEARING:项目存在于数据集之前/之后,但在布局过程中从可见变为不可见(它们被移出屏幕作为其他更改的副作用)
出现:数据集中存在项目之前/之后,但在布局过程中从不可见变为可见(它们在屏幕上移动作为其他变化的副作用)
整体方法确定布局之前/之后存在哪些项目并推断五个中的一个以上状态为每个项目.然后相应地设置动画:
移动PERSISTENT视图({@link ItemAnimator #animateMove(ViewHolder,int,int,int,int)})删除REMOVED视图({@link ItemAnimator #animateRemove(ViewHolder)})
ADDED视图添加({@link ItemAnimator#animateAdd(ViewHolder)})
DISAPPEARING视图移出屏幕
在屏幕上移动视图
到目前为止,我正在寻找PERSISTENT,DISAPPEARING和APPEARING,但是这个方法从未被调用,因为这里有这一行:
boolean animateChangesSimple = mItemAnimator != null && mItemsAddedOrRemoved
&& !mItemsChanged;
Run Code Online (Sandbox Code Playgroud)
mItemsAddedOrRemoved总是假的,所以没有达到任何回调.知道如何正确设置设置标志吗?
android ×2