Android 实现控件按住缩小,松开放大的效果

目录

一、介绍

二、代码

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——界面交互效果进阶

你可能感兴趣的:(android,基础)