Android学习(37) -- 自定义控件(2)解决旋转的bug
来源:互联网 发布:手机淘宝宝贝怎么分类 编辑:程序博客网 时间:2024/06/08 04:11
在使用动画的时候要注意: 系统原生的旋转和位置动画并没有真正改变view的位置
当二级菜单消失的时候,我们点击之前触发事件的位置,就会发现能够继续显示或隐藏三级菜单。如下图
我们在AnimUtil工具类中,当隐藏菜单后,将所有布局下面的子View禁用;当显示菜单的时候,将所有布局下的子View进行显示。完整代码如下:
public class AnimUtil {/** * 关闭按钮 * * @param rl * 操作的布局 * @param startOffset * 动画延迟效果实现 */public static void closeMenu(RelativeLayout rl, int startOffset) {// 获取RelativeLayout子Viewfor (int i = 0; i < rl.getChildCount(); i++) {// 获取当前子View并禁用rl.getChildAt(i).setEnabled(false);}// pivotXValue: 0-1RotateAnimation animation = new RotateAnimation(0, -180,RotateAnimation.RELATIVE_TO_SELF, 0.5f,RotateAnimation.RELATIVE_TO_SELF, 1);animation.setDuration(500);animation.setFillAfter(true);// 动画结束后保持当时的状态animation.setStartOffset(startOffset); // 动画延迟rl.startAnimation(animation);}/** * 显示按钮 * * @param rl * 操作的布局 * @param startOffset * 动画延迟效果实现 */public static void showMenu(RelativeLayout rl ) {// 获取RelativeLayout子Viewfor (int i = 0; i < rl.getChildCount(); i++) {// 获取当前子View并启用rl.getChildAt(i).setEnabled(true);}RotateAnimation animation = new RotateAnimation(-180, 0,RotateAnimation.RELATIVE_TO_SELF, 0.5f,RotateAnimation.RELATIVE_TO_SELF, 1);animation.setDuration(500);animation.setFillAfter(true);// 动画结束后保持当时的状态rl.startAnimation(animation);}}
当点击home按钮的时候,二级菜单和三级菜单都需要消失,那么也需要将MainActivity里面的逻辑进行更改。
public void onClick(View v) {switch (v.getId()) {case R.id.iv_home:if (isShowLeve2) {// 需要隐藏int startOffset = 0;if(isShowLeve3){AnimUtil.closeMenu(leve3, startOffset);startOffset += 300;isShowLeve3 = false;}AnimUtil.closeMenu(leve2,startOffset);} else {// 需要显示AnimUtil.showMenu(leve2);}isShowLeve2 = !isShowLeve2;break;case R.id.iv_menu:if (isShowLeve3) {//关闭三级菜单AnimUtil.closeMenu(leve3, 0);}else {//显示三级菜单AnimUtil.showMenu(leve3);}isShowLeve3 = !isShowLeve3;break;default:break;}}
0 0
- Android学习(37) -- 自定义控件(2)解决旋转的bug
- 重力感应,图片摆动旋转(自定义控件) android
- Android自定义控件,旋转头像直接用在你的项目中(酷毙了)
- <android>一个老控件Spnner解决一个bug的经历(三级联动)
- Android自定义控件的学习总结-(1)
- android自定义控件的学习
- 自定义可以旋转的控件
- 初识Android自定义控件之旋转罗盘的制作
- Android 自定义控件实现弹性旋转的圆形菜单
- android学习七(创建自定义控件)
- 自定义控件学习(2)
- 移动端上传照片 预览(解决iOS等设备照片旋转90度的bug)
- android问题(bug)解决
- [bug]android中ScrollView内部控件match_parent无效的解决!
- Android drawable 玩转自定义图片以及bug的解决
- Android drawable 玩转自定义图片以及bug的解决
- Android自定义控件----3D旋转效果
- Android自定义控件 温度旋转按钮
- Android练习项目 Mp3播放器实现 歌词同步播放(四)
- Scut
- CentOS6.6-64下rpm方式mysql-5.7.12安装实录
- SpringMVC中JSP取不到ModelAndView的数据原因
- mybatis BindingException: Invalid bound statement (not found)
- Android学习(37) -- 自定义控件(2)解决旋转的bug
- java实现简单的单点登录
- Heartbeat (Linux-HA工程的一个组件)
- leetcode 7. Reverse Integer
- NSUserDeafults的关于"第一次登陆"的测试问题
- 二叉树的遍历(非递归和递归实现)
- BeeFramework环境搭建
- 设置tabBar背景颜色
- 跳板机&攻击方式