[android] 优酷环形菜单-旋转动画

获取房子,菜单图标ImageView对象,获取三个圆环RelativeLayout对象

给菜单图标(icon_menu)设置点击事件

定义一个成员变量isLevel3Show来存储第三级菜单是否显示

判断上面的变量,来显示隐藏第三级菜单,定义一个类实现动画效果

切换变量,isLevel3Show=!isLevel3Show

定义一个工具类MyUtils,实现旋转动画

定义一个startAnimOut()

获取RotateAnimation对象,旋转对象的默认中心是左上角,开始度数默认是水平向右为0度,顺时针转;构造函数:开始度数,结束度数,圆心x(宽度一半),圆心y(高度)

调用RotateAnimation对象的setDuration()方法,设置执行时间,参数:毫秒

调用RotateAnimation对象的setFillAfter()方法,设置执行完毕后保持状态,参数:布尔值

定义一个startAnimIn(),参数:RelativeLayout对象,延迟毫秒

和上面一样,度数不一样而已,从180度到360度

调用RotateAnimation对象的setStartOffset()方法,延迟播放

给房子图标(icon_home)设置点击事件

判断当二级菜单显示时,把它隐藏,并且当三级菜单也显示时,也要隐藏

当它隐藏时,让他显示

MainActivity.java

package com.tsh.myyouku;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.RelativeLayout;

public class MainActivity extends Activity implements OnClickListener {
    private ImageView icon_home;
    private ImageView icon_menu;
    private RelativeLayout level1;
    private RelativeLayout level2;
    private RelativeLayout level3;

    private boolean isLevel3Show=true;
    private boolean isLevel2Show=true;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        icon_home=(ImageView) findViewById(R.id.icon_home);
        icon_menu=(ImageView) findViewById(R.id.icon_menu);
        level1=(RelativeLayout) findViewById(R.id.level1);
        level2=(RelativeLayout) findViewById(R.id.level2);
        level3=(RelativeLayout) findViewById(R.id.level3);
        icon_menu.setOnClickListener(this);
        icon_home.setOnClickListener(this);
    }
    //处理点击事件
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.icon_menu://菜单图标
            if(isLevel3Show){
                //隐藏
                MyUtils.startAnimOut(level3,0);
            }else{
                //显示
                MyUtils.startAnimIn(level3);
            }
            isLevel3Show=!isLevel3Show;
            break;
        case R.id.icon_home://菜单图标
            if(isLevel2Show){
                //隐藏
                MyUtils.startAnimOut(level2,0);
                if(isLevel3Show){
                    MyUtils.startAnimOut(level3,100);
                    isLevel3Show=false;
                }
            }else{
                //显示
                MyUtils.startAnimIn(level2);
            }
            isLevel2Show=!isLevel2Show;
            break;
        }
    }
}

MyUtils.java

package com.tsh.myyouku;

import android.view.animation.RotateAnimation;
import android.widget.RelativeLayout;

public class MyUtils {
    /**
     * 旋转离开
     * @param view
     */
    public static void startAnimOut(RelativeLayout view,long times) {
        RotateAnimation rotateAnimation=new RotateAnimation(0, 180, view.getWidth()/2, view.getHeight());
        rotateAnimation.setDuration(1000);
        rotateAnimation.setFillAfter(true);
        rotateAnimation.setStartOffset(times);
        view.startAnimation(rotateAnimation);
    }
    /**
     * 旋转进入
     * @param level3
     */
    public static void startAnimIn(RelativeLayout view) {
        RotateAnimation rotateAnimation=new RotateAnimation(180, 360, view.getWidth()/2, view.getHeight());
        rotateAnimation.setDuration(1000);
        rotateAnimation.setFillAfter(true);
        view.startAnimation(rotateAnimation);
    }

}

时间: 2024-08-07 00:12:11

[android] 优酷环形菜单-旋转动画的相关文章

[android] 优酷环形菜单-相对布局练习

优酷环形菜单 布局文件,使用<RelativeLayout/>控件作为第一级菜单,相对布局,位于父控件的底部,水平居中,因为图片不是特别的标准,因此宽度和高度都钉死,宽度是高度的两倍 二次菜单和三级菜单都一样的布局 小房子的图标<imageView/>控件,在父控件中居中 第二级搜索图标,位于父控件的底部,上下左右maigin10dp 第二级菜单图标,位于父控件的顶部,水平居中,marginTop 10dp 第二级叹号图标,位于父控件的底部,右边,margin 10dp 第三级的图

android一个弹出菜单的动画(一)

先上效果图: 先写Layout文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent&quo

jQuery移动优先的炫酷环形菜单插件

FerroMenu是一款炫酷的移动优先的jquery环形菜单特效插件.该环形菜单插件可以让你很轻松的创建一个环形菜单,并且该菜单可以在屏幕上随意拖动到9个位置上(东.南.西.北.中方向和东南.西北.东北和西南方向). 该环形菜单的菜单项可以是锚链接.外部链接或javascript等等.该菜单展开的最终效果有点类似于超酷jQuery环形按钮菜单效果插件.FerroMenu环形气泡菜单的特点有: 可以将菜单拖动到屏幕的9个位置上:东.南.西.北.中方向和东南.西北.东北和西南方向. 可以通过拖动来移

Android自定义控件——仿优酷圆盘菜单

尊重作者劳动成果,转载时请标明该文章出自  http://blog.csdn.net/allen315410/article/details/39232535 最近学习的时候,看见一份资料上教怎么写自定义控件,上面的示例用的是优酷早期版本的客户端,该客户端的菜单就是一个自定义的组件(现在的版本就不清楚有没有了,没下载过了),好吧,废话不多说,先上优酷的原型图. 这个自定义组件感官上看是,里外三层设计,每一层上有布置不同的菜单按钮,每一层又设置了进入和退出的动画,来增强用户的体验效果.这种设计非常

Android优酷菜单组件自定义

主要做的就是模仿优酷手机客户端的底部菜单控件的实现.先来几张图片,点击中间的home,显示二级菜单,点击二级菜单的menu,显示三级菜单. 这是实现起来最简单的一个布局,但是从中学会了自定义动画和一些布局的基本知识,从中还是收获很大的. 首先是定义布局文件,三个菜单条其实就是三个relativelayout,level1,level2,level3,然后每个菜单条中的小标题就加到对应的相对布局中. <RelativeLayout xmlns:android="http://schemas.

android一个弹出菜单的动画(二)

假设做一个弹出的控件,我们能够进行加入view: 写class SatelliteMenu extends FrameLayout private void init(Context context, AttributeSet attrs, int defStyle) { inflate(context, R.layout.sat_main, this); imgMain = (ImageView) findViewById(R.id.sat_main); if(attrs != null){

【Android】自定义环形菜单View

实现的效果图:六个小图片可以跟随手指滑动绕中心点旋转 代码: package com.example.test_canvas; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import a

模仿优酷菜单

转载注明出处:    http://blog.csdn.net/forwardyzk/article/details/42554691 在开发中,会使用菜单,现在模拟一下优酷的菜单效果. 其实效果都是由android基本的动画效果组成的,在合适的时间显示对应的动画,即可展示出不一样的效果. 思路: 1.自定义类RotateMenuView继承RelativeLayout. 2.在需要加载的布局文件中,添加对应的菜单View. 3.定义菜单进入和出去的动画效果,使用旋转动画,进来顺时针,出去的时候

Android立体旋转动画实现与封装(支持以X、Y、Z三个轴为轴心旋转)

本文主要介绍Android立体旋转动画,或者3D旋转,下图是我自己实现的一个界面 立体旋转分为以下三种: 1. 以X轴为轴心旋转 2. 以Y轴为轴心旋转 3. 以Z轴为轴心旋转--这种等价于android默认自带的旋转动画RotateAnimation 实现立体旋转核心步骤: 1. 继承系统Animation重写applyTransformation方法 通过applyTransformation方法的回调参数 float interpolatedTime, Transformation t 来