Android中自定义view,onTouchEvent的事件不触发,请大佬看看为什么?

package com.yuan.refresh;

import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

public class GoRefreshLayout extends LinearLayout {
    private BaseRefreshmanager mRefreshManager;
    private Context mContext;
    private View mHeadView;
    private int mHeadViewHeight;
    private int minHeadViewHeight; // 头部布局最小的一个高度
    private int maxHeadViewHeight; // 头部布局最大的一个高度

    public GoRefreshLayout(Context context) {
        super(context);
        initView(context);
    }

    public GoRefreshLayout(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        initView(context);
    }

    public GoRefreshLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView(context);

    }

    private void initView(Context context) {
        mContext = context;
    }

    /**
     * 开启下拉刷新, 下拉刷新的效果是默认的
     */
    public void setRefreshManager() {
        mRefreshManager = new DeafultRefreshManager(mContext);
        intHeaderView();
    }

    /**
     * 开启下拉刷新, 下拉刷新的效果是自定义
     *
     * @param manager
     */
    public void setRefreshManager(BaseRefreshmanager manager) {
        mRefreshManager = manager;
        intHeaderView();
    }


    private void intHeaderView() {
        Log.i("hetaorefresh", "intHeaderView:");
        setOrientation(VERTICAL);
        mHeadView = mRefreshManager.getHeaderView();
        mHeadView.measure(0,0);
        mHeadViewHeight = mHeadView.getMeasuredHeight();
        minHeadViewHeight = -mHeadViewHeight;
        maxHeadViewHeight = (int) (mHeadViewHeight * 0.3f);
        LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,mHeadViewHeight);
        params.topMargin = minHeadViewHeight;
        addView(mHeadView,0,params);
    }


    private int downY;
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        Log.i("hetaorefresh", "MotionEvent:");
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                downY = (int) event.getY();
                return true;
            case MotionEvent.ACTION_MOVE:
                int moveY = (int) event.getY();
                int dy = moveY - downY;
                Log.i("hetaorefresh", "dy:" + dy);
                if (dy > 0) {
                    LayoutParams layoutParams = (LayoutParams) mHeadView.getLayoutParams();
                    //阻尼效果
                    layoutParams.topMargin = (int) Math.min(dy / 1.8f + minHeadViewHeight, maxHeadViewHeight);
                    mHeadView.setLayoutParams(layoutParams);
                }
                return true;
            case MotionEvent.ACTION_UP:
                break;
            default:
                break;
        }

        return true;
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值