Android 位移动画移动后 子元素未移动问题
2016-03-31 00:00
615 查看
问题描述:
移动一个Linerlayout 包含子元素多个button ,使用位移动画后,发现button的点击区域还在位移前的位置,并没有跟随移动,百思不得解,最后在CSDN发现了解决了方法,感觉这个api 有点不太友好,不知道这样设计的目的是出于什么考虑,但对于使用者来说,确实带来不少麻烦。解决参考 http://bbs.csdn.net/topics/360035885 很久之前的帖子了。
筛选的解决方法:
例如初始位置是0,你要运动到 300
那么你可以new TranslateAnimation(0, 300, 0, 0);来获得位移动画,但是移动后,它会闪回0位置,因为控件实际坐标还是0 (你可以用getX()来测试一下),而如果你用setFillAfter(true)来填充位置,它看起来停留在300了,可是你getX(),它还是0,这种情况就好像控件被拉伸了,但是实际坐标没有变,最要命的是,点击热区不会随控件移动(让人无法接受...)
然后这里提出了先移位,再做位置变换,你先visibility-gone,移动好控件位置,再visibility-visible,然后这时候你控件的位置已经在300了,如果这时候你用new TranslateAnimation(0, 300, 0, 0),就会从300移动到600再弹回来,于是做个反向offset,new TranslateAnimation(-300, 0, 0, 0),那么就从0,运动到300,而且不回弹了
移动一个Linerlayout 包含子元素多个button ,使用位移动画后,发现button的点击区域还在位移前的位置,并没有跟随移动,百思不得解,最后在CSDN发现了解决了方法,感觉这个api 有点不太友好,不知道这样设计的目的是出于什么考虑,但对于使用者来说,确实带来不少麻烦。解决参考 http://bbs.csdn.net/topics/360035885 很久之前的帖子了。
筛选的解决方法:
例如初始位置是0,你要运动到 300
那么你可以new TranslateAnimation(0, 300, 0, 0);来获得位移动画,但是移动后,它会闪回0位置,因为控件实际坐标还是0 (你可以用getX()来测试一下),而如果你用setFillAfter(true)来填充位置,它看起来停留在300了,可是你getX(),它还是0,这种情况就好像控件被拉伸了,但是实际坐标没有变,最要命的是,点击热区不会随控件移动(让人无法接受...)
然后这里提出了先移位,再做位置变换,你先visibility-gone,移动好控件位置,再visibility-visible,然后这时候你控件的位置已经在300了,如果这时候你用new TranslateAnimation(0, 300, 0, 0),就会从300移动到600再弹回来,于是做个反向offset,new TranslateAnimation(-300, 0, 0, 0),那么就从0,运动到300,而且不回弹了
相关文章推荐
- 我的第一个Android依赖注入by dagger2
- Android RadioButton 背景图变形问题
- Android 图片全屏
- Android 位移动画移动后 子元素未移动问题
- Android RadioButton 背景图变形问题
- android 布局文件id 和根节点id指向问题
- android listview 同时监听click和longclick
- android 布局文件id 和根节点id指向问题
- android listview 同时监听click和longclick
- android 加密
- android 加密
- android手机安装无法解析文件 真机测试google device driver 无法识别手机
- android手机安装无法解析文件 真机测试google device driver 无法识别手机
- Android onActivityResult intent==null
- Android onActivityResult intent==null
- Android linker可执行程序加载库失败时输出更详细调试信息
- android常用框架
- Android studio常用快捷键
- iOS 和 Android 的后台推送原理各是什么?有什么区别?
- Android Studio导入github下载的工程