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

来源:互联网 发布:c51单片机跑马灯程序 编辑:程序博客网 时间:2024/05/22 13:42

对于可点击的控件,在按下后,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都由该控件来响应。很重要