安卓 属性动画 今天用到的 动画效果以及过程中的经验分享

来源:互联网 发布:kmp算法匹配过程 编辑:程序博客网 时间:2024/06/09 14:15

先看看界面吧     要达成的效果就是 点击 红圈2就移动到上部 覆盖1 

我原先用 安卓的  ViewAnimation  其中的 TranslateAnimation 动画,但是出现一个问题 就是当2移动到1之后 红圈的箭头就无法点击了 根据群里的朋友提示

这是因为 ViewAnimation  只能改变界面显示的位置不能改变 界面中的属性 当 2移动到 1位置的时候,点击移动上去的箭头没有效果

就是说用 ViewAnimation 动画 当 箭头移动上去之后 红圈1 是没有点击效果的

当点击红圈2 箭头原先所在的位置 才有效果,这明显不符合要求所以

为了让2在移动到1的位置时 其中的属性还能用的话 就要用  属性动画 ObjectAnimator  意外的比 原先的动画还简单 以下是代码
                ObjectAnimator objectAnimator =  new ObjectAnimator();
                 objectAnimator.ofFloat(ll_data, "TranslationY",-300)
                 .setDuration(600).start();
objectAnimator 就是新的动画类了  ofFloat 方法的第一个参数 只你要执行位置的控件 ,"TranslationY" 是你要执行什么动画

"TranslationY"代表了 你要执行 Y轴 位移,根据我的测试这个字符串应该是对应的 动画属性,就是说有什么属性 在这里弄成字符串 就行了

最后一个参数 -300 代表 往上移动300个DP左右吧 。 值得注意的是 当你想让 2再次移动下来的话 第三个参数写成0就行了


一般来说到这里就结束了,不过我的需求还需要 当2移动上去之后  2原先的地方能有个控件显示,

在这里有点坑了, 我原先的构思就是 把 2弄成 Freamlayout 布局 叠加两层 第一层就是现在看到的 第二层 就是位移后展示的控件,

然后在这里出现了未知的错误,此时 2是一个Freamlayout布局 里边有两层布局, 虽然我指定了不同的ID 但是 当2的第一层移动到

1之后 第二层确实显示出来了 在原先的位置,但是 在1的位置上 什么都不显示了,各种尝试都无效,包括当 2移动到1的位置 把 原先的2

动态生成一个Fragment 还是不行,

我意识到 2移动到1之后    2就变得囊括了1 与2 了, 下边空白的界面其实就是2

所以我当 2位置到1之后 我就让  2 .addview(); 谁知道这样就直接实现了,当然2位移回去的时候别忘了 removeview()否则 2会不停的加 VIEW~~

以上就是 我在做 位移动画时碰到的问题 希望能给各位网友一点参考~




0 0