上一篇博文,有个小bug,就是点了后如果图片都隐藏了,此时再次点击那些按钮存在的位置时,还是会显示出来。

    这里原因是图片隐藏了,但是图片的属性还在原来的位置,点击后还是会触发相应的方法,该怎么解决呢,有2中方法:

    1、利用viewgroup的特点,获取它的每个子view,然后设置子view在旋转后不可选中。

    

package com.yuanlp.youkudemo;

import android.view.View;
import android.view.ViewGroup;
import android.view.animation.RotateAnimation;

/**
 * Created by 原立鹏 on 2017/7/3.
 * 控制level的指定的看控件
 */

class Tools {
    public static void hideView(ViewGroup view){
        //参数解释:第一个蚕食是从多少开始,第二个是旋转多少度,第三个以及第四个是相对于控件来说,旋转中心的位置,即控件宽度的一半以及高度
       hideView(view,0);

    }

    public static void showView(ViewGroup view) {

        //参数解释:第一个蚕食是从多少开始,第二个是旋转多少度,第三个以及第四个是相对于控件来说,旋转中心的位置,即控件宽度的一半以及高度
        RotateAnimation ra=new RotateAnimation(180,360,view.getWidth()/2,view.getHeight());
        ra.setDuration(500);  //设置动画的时间,不然的话直接就没了,没有视觉效果
        ra.setFillAfter(true);  //动画停留在完成的状态

        view.startAnimation(ra);  //启动动画
        
 //-----------------------------------------------------------------------------//       
        //这里解决之前说的bug,获取
        for (int j=0 ;j<view.getChildCount();j++){  //循环每个子组件,在隐藏时,设置为不可点击
            View childView=view.getChildAt(j);
            childView.setEnabled(true);
        }
//-----------------------------------------------------------------------------------//
    }


    /**
     * view和viewgroup的区别在与是否可以操作子组件
     * @param view
     * @param i
     */
    public static void hideView(ViewGroup view, int i) {
        //参数解释:第一个蚕食是从多少开始,第二个是旋转多少度,第三个以及第四个是相对于控件来说,旋转中心的位置,即控件宽度的一半以及高度
        RotateAnimation ra=new RotateAnimation(0,180,view.getWidth()/2,view.getHeight());
        ra.setDuration(500);  //设置动画的时间,不然的话直接就没了,没有视觉效果
        ra.setStartOffset(i);  //延迟多久后播放动画
        ra.setFillAfter(true);  //动画停留在完成的状态

        view.startAnimation(ra);  //启动动画

     //----------------------------------------------------------------------------//
        for (int j=0 ;j<view.getChildCount();j++){  //循环每个子组件,在隐藏时,设置为不可点击
            View childView=view.getChildAt(j);
            childView.setEnabled(false);
        }
//---------------------------------------------------------------------------------//

    }
}

第二种方法是利用属性动画,暂时还没有研究这个,后面会补上属性动画的解决方案

具体可以详见 郭霖大神的博客:http://blog.csdn.net/guolin_blog/article/details/43536355

也可以购买他的书 《第一行代码-第二版》,新手入门书