目录
一、介绍
二、代码
1、通过onTouch监听实现
2、通过ButterKnife的@OnTouch监听实现
参考链接:
一、介绍
效果:按钮按下时会缩小,松开变回原大小
思路:使用view的setScaleX 和setScaleY这两个方法 ,在onTouch的DOWN事件和UP 事件中做处理,
二、代码
1、通过onTouch监听实现
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
if (view.getId() == R.id.btn_test) {
mTestBtn.setScaleX((float) 0.95);
mTestBtn.setScaleY((float) 0.95);
}
break;
case MotionEvent.ACTION_UP:
if (view.getId() == R.id.btn_test) {
mTestBtn.setScaleX(1);
mTestBtn.setScaleY(1);
}
break;
default:
}
return false;
}
注意onTouch事件要把返回值置为false 否则事件将被onTouch消费掉,onClick得不到响应。
2、通过ButterKnife的@OnTouch监听实现
@OnTouch({R.id.tv_back, R.id.Rl_my_info, R.id.ll_my_order, R.id.ll_my_wallet, R.id.ll_my_coupon, R.id.ll_my_massage, R.id.ll_about, R.id.ll_explain})
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: //手指按下
scaleView(true, 0.8f,view);
break;
case MotionEvent.ACTION_MOVE: //手指移动(从手指按下到抬起 move多次执行)
break;
case MotionEvent.ACTION_UP: //手指抬起
scaleView(false, 1.0f,view);
break;
}
return false;
}
/**
* @param zoomOut true缩小 false 还原
* @param ratio 缩小的比例(0-1)
* @param views view数组
*/
private void scaleView(boolean zoomOut, float ratio, View... views) {
for (View view : views) {
if (zoomOut) {
view.setScaleX(ratio);
view.setScaleY(ratio);
} else {
view.setScaleX(1);
view.setScaleY(1);
}
}
}
参考链接:
Android实现按住缩小 松开放大的效果
ButterKnife之@OnTouch——界面交互效果进阶