自定义控件之用系统控件重新组合(二、优酷菜单延伸扩展)

自定义控件之用系统控件重新组合(一、优酷菜单为例)中简单的实现了优酷菜单的效果,这篇文章在此基础之上进一步的延伸和探索。

一、优酷菜单做实验扩展

1.设置三个圆环的点击事件后,在点击各个按钮和圆环。会有怎么样的效果呢?
 
2.设置三个圆环的点击事件后,交换三个圆环的位置。看看点击效果,说明原因?

二、拓展知识-动画的分类

Android包含三种动画:View Animation(补间)、 Drawable Animation(帧动画)、Property Animation(Android3.0新引入)。
 
View Animation:
 
基于View的渐变动画,她只改变了View的绘制效果,而实际属性值未变。比如动画移动一个按钮位置,但按钮点击的实际位置仍未改变。在代码中定义动画,可以参考AnimationSet类和Animation的子类;而如果使用XML,可以在res/anim/文件夹中定义XML文件。
 
Drawable Animation:
 
加载一系列Drawable资源来创建动画,这种传统动画某种程度上就是创建不同图片序列,顺序播放,就像电影胶片。在代码中定义动画帧,使用AnimationDrawable类;XML文件能更简单的组成动画帧,在res/drawable文件夹,使用<animation-list>采用<item>来定义不同的帧。感觉只能设置的属性是动画间隔时间。
 
Property Animation:
 
动画的对象除了传统的View对象,还可以是Object对象,动画之后,Object对象的属性值被实实在在的改变了。Property animation能够通过改变View对象的实际属性来实现View动画。任何时候View属性的改变,View能自动调用invalidate()来试试刷新。
三、属性动画解决Bug

1、属性动画介绍:

 

2_用属性动画解决bug
 
 public static void hideView(ViewGroup view, int startOffset) {
//      view.setRotation();
        ObjectAnimator animator = ObjectAnimator.ofFloat(view,"rotation",0,180);
        animator.setDuration(500);
        animator.setStartDelay(startOffset);//设置延迟播放
     animator.start();//开始播放动画

        //单独设置中心点击
    view.setPivotX(view.getWidth()/2);
        view.setPivotY(view.getHeight());

    }

    public static void showView(ViewGroup view, int startOffset) {

        ObjectAnimator animator = ObjectAnimator.ofFloat(view,"rotation",180,360);
        animator.setDuration(500);
        animator.setStartDelay(startOffset);//设置延迟播放
        animator.start();

        //单独设置中心点击
    view.setPivotX(view.getWidth() / 2);
        view.setPivotY(view.getHeight());
    }
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值