当前位置: 首页 > 科技观察

酷弹菜单,有横和弧两种

时间:2023-03-20 20:48:24 科技观察

源码介绍酷弹菜单,有横和弧两种。注意:当点击源代码的弧形菜单时,程序会崩溃。源码运行源代码片段截图:.menu.animation.ShrinkAnimationOut;importcom.spring.menu.animation.ZoomAnimation;importcom.spring.menu.utility.DeviceUtility;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.view.ViewGroup;importandroid.view.View.OnClickListener;importandroid.view.animation.Animation;importandroid.view.animation.AnimationUtils;importandroid.view.animation.AnticipateInterpolator;importandroid.widget.RelativeLayout;/***Android实现拉伸的菜单效果elasticdistribution*@Description:Android实现伸缩弹性分布菜单的效果*@File:MainActivity.java*@Packagecom.spring.menu.activity*@AuthorHanyonglu*@Date2012-10-25pm09:41:31*@VersionV1.0*/publicclassMainActivityextendsActivity{privatebooleanareMenusShowing;privateViewGroupmenusWrapper;privateViewimageViewPlus;privateViewshrinkRelativeLayout;privateRelativeLayoutlayoutMain;//顺时针旋转动画privateAnimationanimRotateClockwise;//你试着旋转动画privateAnimationanimRotateAntiClockwise;privateClass[]intentActivity={SecondActivity.class,ThreeActivity.classeActivity.class,Four,ThreeActivity.class,FourActivity.class};privateint[]mainResources={R.drawable.bg_main_1,R.drawable.bg_main_2,R.drawable.bg_main_3,R.drawable.bg_main_4,R.drawable.bg_main_1,R.drawable.bg_main_4};/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main_activity);//初始化initViews();}//初始化privatevoidinitViews(){imageViewPlus=findViewById(R.id.imageview_plus);menusWrapper=(ViewGroup)findViewById(R.id.menus_wrapper);shrinkRelativeLayout=findViewById(R.id.relativelayout_shrink);layoutMain=(RelativeLayout)findViewById(R.id.layout_content);animRotateClockwise=AnimationUtils.loadAnimation(这个,R.anim.rotate_clockwise);animRotateAntiClockwise=AnimationUtils.loadAnimation(this,R.anim.rotate_anticlockwise);shrinkRelativeLayout.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){//TODOAuto-generatedmethodstubshowLinearMenus();}});for(inti=0;icls;私人资源;私人SpringMenuLauncher(Classc,intresource){this.cls=c;this.resource=resource;}publicvoidonClick(Viewv){//TODO自动生成的方法stubMainActivity.this.startSpringMenuAnimations(v);layoutMain.setBackgroundResource(resource);//MainActivity.this.startActivity(//newIntent(//MainActivity.this,//MainActivity.SpringMenuLauncher.this.cls));}}/***展示菜单动画效果*@paramview*@paramrunnable*/privatevoidstartSpringMenuAnimations(Viewview){areMenusShowing=true;AnimationshrinkOut1=newShrinkAnimationOut(300);AnimationgrowOut=newEnlargeAnimationOut(300);shrinkOut1.setInterpolator(newAnticipateInterpolator(2.0F));shrinkOut1.setAnimationListener(newAnimation.AnimationListener(){publicdivonAnimationEnimation(AnimationEnimation){//TODOAuto-generatedmethodstubMainActivity.this.imageViewPlus.clearAnimation();}publicvoidonAnimationRepeat(Animationanimation){//TODOAuto-generatedmethodstub}publicvoidonAnimationStart(Animationanimation){//TODOAuto-generatedmethodstub}});view.startAnimation(growOut);}}当点击红色按钮时,弹出顶部菜单。单击菜单时,可以更改上面的背景图像。当然也可以直接进入一个Activity。所以上面定义了intentActivity和mainResources两个数组,分别代表Switch这个Activity和要改变的图片。您可以根据实际需要进行设置。当点击红色按钮时,中间的加号向右旋转225变成十字,通过如下动画:ViewRowCode 再次点击恢复左旋转,和上面android:fromDegrees换成android:toDegrees就可以了。我们再了解一下,另一个重要的动画类是SpringAnimation,它控制着各个菜单的动画效果。代码如下:ViewRowCodepackagecom.spring.menu.animation;importcom.spring.menu.control.ImageButtonExtend;importandroid.view.View;importandroid.view.ViewGroup;importandroid.view.ViewGroup.MarginLayoutParams;importandroid.view.animation。AnticipateInterpolator;importandroid.view.animation.AnticipateOvershootInterpolator;importandroid.view.animation.OvershootInterpolator;importandroid.view.animation.TranslateAnimation;/***分布菜单加载缩放动画*@Description:分布菜单加载缩放动画*@File:SpringAnimation.java*@Packagecom.spring.menu.animation*@AuthorHanyonglu*@Date2012-10-25pm12:18:39*@VersionV1.0*/publicclassSpringAnimationextendsZoomAnimation{privatestaticint[]size;privatestaticintxOffset=210;privatestaticintyOffset=-15;publicstaticfinalintDURATION=300;/***constructor*@paramdirection*@paramduration*@paramview*/publicSpringAnimation(Directiondirection,Viewview,longduration){super(direction,duration,newView[]{view});SpringAnimation.xOffset=SpringAnimation.size[0]/2-30;}/***开始显示动画效果*@paramviewgroup*@paramdirection*@paramsize*/publicstaticvoidstartAnimations(ViewGroupviewgroup,ZoomAnimation.Directiondirection,int[]size){SpringAnimation.size=size;switch(direction){caseHIDE:startShrinkAnimations(viewgroup);break;caseSHOW:startEnlargeAnimations(viewgroup);break;}}/***开始提交现菜单*@paramviewgroup*/privatestaticvoidstartEnlargeAnimations(ViewGroupviewgroup){for(inti=0;i源码链接:http://down.51cto.com/data/1968733【责任编辑:陈庆祥TEL:(010)68476606】