android - 为共享元素回调添加侦听器而不更改视图可见性
问题描述
我在两个活动之间使用共享元素转换。第二个活动由包含片段的视图寻呼机组成。我想在共享元素过渡结束时进行进一步的更改。这是回调:
setEnterSharedElementCallback(
object : SharedElementCallback() {
override fun onMapSharedElements(
names: MutableList<String>,
sharedElements: MutableMap<String, View>
) {
val keySharedElementView = sharedElements[videoPath[currentPosition]]
if (keySharedElementView != null) {
Log.i("KSEV", "Not Null")
ViewCompat.animate(keySharedElementView)
.setListener(object : ViewPropertyAnimatorListenerAdapter() {
override fun onAnimationEnd(view: View?) {
super.onAnimationEnd(view)
Log.i("KSEV","Ended")
runOnUiThread { k
videoThumb.visibility = GONE
if (videoThumb.visibility == GONE) {
Log.i("SEV", "GONE")
}
}
}
}).start()
}
}
})
打印最后的日志语句 GONE。但视图仍然在屏幕上可见。如何改变其可见性?
解决方案
您的代码看起来不错,只是您还没有开始动画,因此没有 onAnimationEnd() 回调。
修改您的代码如下:
ViewCompat.animate(keySharedElementView)
.setListener(object : ViewPropertyAnimatorListenerAdapter() {
override fun onAnimationEnd(view: View?) {
super.onAnimationEnd(view)
Log.i("KSEV","Ended")
}
}).setDuration(250).start()
推荐阅读
- java - 错误:无法访问 jarfile - 运行 bfg.jar 时
- javascript - 使用前未定义的前向参考任务
- java - 关于 com.jcraft.jsch.JSchException: UnknownHostKey: xycom 的查询。DSA 密钥指纹是“ac:ew:....”
- node.js - create-react-app + npm start - 'react-scripts' 未被识别为内部或外部命令
- c++ - 复杂类型的 QVector 与 std::vector
- python - Django-Private-Chat in , TemplateDoesNotExist at /dialogs/
- python - Numpy:如何用一维数组索引二维数组?
- html - 背景颜色在一个位置不稳定
- r - 决策树 rpart 通过插入符给出 ROC 为 0.5
- jquery - 我可以为此 API 使用 jquery 的 ajax 方法而不是 unirest 吗?