可自动弹出刷新的SwipeRefreshLayout

来源:互联网 发布:linux fdisk分区教程 编辑:程序博客网 时间:2024/06/05 18:10
//需要导入最新的V4包package com.wans51.customview;import android.content.Context;import android.support.v4.widget.SwipeRefreshLayout;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import java.lang.reflect.Field;import java.lang.reflect.Method;/** * Created by daixiansen on 2016/2/16. */public class AutoSwipeRefreshLayout extends SwipeRefreshLayout {    private ViewGroup viewGroup ;    public ViewGroup getViewGroup() {        return viewGroup;    }    public void setViewGroup(ViewGroup viewGroup) {        this.viewGroup = viewGroup;    }    public AutoSwipeRefreshLayout(Context context) {        super(context);    }    public AutoSwipeRefreshLayout(Context context, AttributeSet attrs) {        super(context, attrs);    }    /**     * 自动刷新     */    public void autoRefresh() {        try {            Field mCircleView = SwipeRefreshLayout.class.getDeclaredField("mCircleView");            mCircleView.setAccessible(true);            View progress = (View) mCircleView.get(this);            progress.setVisibility(VISIBLE);            Method setRefreshing = SwipeRefreshLayout.class.getDeclaredMethod("setRefreshing", boolean.class, boolean.class);            setRefreshing.setAccessible(true);            setRefreshing.invoke(this, true, true);        } catch (Exception e) {            e.printStackTrace();        }    }    @Override    public boolean onTouchEvent(MotionEvent arg0) {        if(null!= viewGroup){            int scrollY = viewGroup.getScrollY();            if(viewGroup.getScrollY()> 1){                //直接截断时间传播                return false;            }else{                return super.onTouchEvent(arg0);            }        }        return super.onTouchEvent(arg0);    }}
0 0
原创粉丝点击