android 弹出菜单环形,安卓环形菜单(处理了菜单键和返回键+加入了动画) -电脑资料...

废话不多说,先看效果图:

package com.example.circlemenuofbottom.anim;import android.view.animation.RotateAnimation;import android.widget.RelativeLayout;/** * @author lzd * * QQ : 2622596982 * * email :www.2cto.com * * QQ :277599214 */public class MyAnimationUtils {/** * 出去的动画---顺时针出 * * @param view * 执行动画的对象 */public static void animaOut(RelativeLayout view) {/* * RotateAnimation animation = new RotateAnimation(0, 180, * view.getWidth() / 2, view.getHeight()); animation.setDuration(500); * animation.setFillAfter(true); view.startAnimation(animation); */animaOut(view, 0);}/** * 出去的动画---逆时针进 * * @param view * 执行动画的对象 */public static void animaIn(RelativeLayout view) {/* * // 顺时针进 // RotateAnimation animation = new RotateAnimation(180, // * 360,view.getWidth() / 2, view.getHeight()); // 逆时针进 RotateAnimation * animation = new RotateAnimation(-180, -360, view.getWidth() / * 2,view.getHeight()); animation.setDuration(500); * animation.setFillAfter(true); view.startAnimation(animation); */animaIn(view, 0);}/** * 出去的动画---顺时针出 * * @param view * 执行动画的对象 * @param offSetTime * 延时执行的时间 */public static void animaOut(RelativeLayout view, int offSetTime) {RotateAnimation animation = new RotateAnimation(0, 180,view.getWidth() / 2, view.getHeight());animation.setDuration(500);animation.setStartOffset(offSetTime);animation.setFillAfter(true);view.startAnimation(animation);}public static void animaIn(RelativeLayout view, int offSetTime) {// 顺时针进// RotateAnimation animation = new RotateAnimation(180,// 360,view.getWidth() / 2, view.getHeight());// 逆时针进RotateAnimation animation = new RotateAnimation(-180, -360,view.getWidth() / 2, view.getHeight());animation.setDuration(500);animation.setStartOffset(offSetTime);animation.setFillAfter(true);view.startAnimation(animation);}}

按键的处理思路:/* * 监听菜单键,当用户点击菜单键的时候,显示和隐藏一级和二级菜单 * * 监听返回键,再按一次退出程序 */private long exitTime = 0;@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// 菜单键的处理if(event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_MENU){// 如果 一级菜单显示,隐藏 全部if(isShowLevel1){MyAnimationUtils.animaOut(level);isShowLevel1 = false;if(isShowLevel2){MyAnimationUtils.animaOut(level2,120);isShowLevel2 = false;if(isShowLevel3){MyAnimationUtils.animaOut(level3,120);isShowLevel3 = false;}}}else{// 如果一级菜单式隐藏的,显示 一,二级菜单MyAnimationUtils.animaIn(level);MyAnimationUtils.animaIn(level2, 120);isShowLevel1 = true;isShowLevel2 = true;}}// 返回键if(event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK){if(System.currentTimeMillis() - exitTime > 2000){Toast.makeText(this, 再按一次返回键退出, Toast.LENGTH_SHORT).show();exitTime = System.currentTimeMillis();}else{finish();System.exit(0);}return true;}return super.onKeyDown(keyCode, event);}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值