视图响应触摸事件的缩放效果

对于可点击的控件,在按下后,view缩小,在抬起后恢复到原有大小。并且判断,如果拇指已经划出控件,则不响应事件,并且控件也会恢复到原有大小。
下面代码里面的布尔变量choose_execute是一个全局的变量,属于方法外的变量。
另外需要注意的是,在布局代码中最好用一个viewgroup将需要有此缩放效果的view包裹起来,并且此viewgroup为固定大小,不然整个布局会随着缩放动画而变化。
在ontouch事件里面添加如下代码。

switch (event.getAction()){
     case MotionEvent.ACTION_DOWN:
        choose_execute=true;//将标志位置为true,表示按下的点位于视图布局内
        ViewGroup.LayoutParams params= v.getLayoutParams();//得到控件的布局参数
        params.width+=params.width*0.1f;//将控件的宽高放大至原来的1.1倍
        params.height+=params.height*0.1f;
        v.setLayoutParams(params);
        break;
     case MotionEvent.ACTION_MOVE:
        float x=event.getX();
        float y=event.getY();
        if(choose_execute&&!SimpleUtil.checkOutOfView(x,y,v)){//判断按下的点是否超出控件布局外面
           choose_execute=false;//表示已经超出控件范围,所以为了不执行后序的事件,将标志置为false
           ViewGroup.LayoutParams params1= v.getLayoutParams();//将控件大小恢复为原来大小
           params1.width-=params1.width*0.091f;
           params1.height-=params1.height*0.091f;
           v.setLayoutParams(params1);
        }
        break;
      case MotionEvent.ACTION_UP:
        if(choose_execute){//判断还是否应该响应原来的事件
            ViewGroup.LayoutParams params1= v.getLayoutParams();//将控件大小恢复为原来大小
            params1.width-=params1.width*0.091f;
            params1.height-=params1.height*0.091f;
            v.setLayoutParams(params1);
            // TODO: 2017/5/3 code the click event
         }
      break;
   }
  return true;//返回true表示down后面的后续事件move和up都由该控件来响应。很重要

你可能感兴趣的:(Android)