Android超简单实现listview上下拉伸回弹动画效果

超简单实现listview上下拉伸回弹动画效果

希望能帮到大家,共同进步

import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.widget.ListView;

public class MyListView extends ListView {

    private Context mContext;

    private int mMaxYOverscrllDistance;
    //回弹距离
    private int MAX_Y = 200;

    public MyListView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        this.mContext = context;
        initBounceListView();
    }

    public MyListView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.mContext = context;
        initBounceListView();
    }

    public MyListView(Context context) {
        super(context);
        this.mContext = context;
        initBounceListView();
    }

    private void initBounceListView(){
        DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
        float desity = metrics.density;
        //允许超出边界高度的最大距离
        mMaxYOverscrllDistance = (int) (desity*MAX_Y);
    }

    @SuppressLint("NewApi")
    @Override
    protected boolean overScrollBy(int deltaX, int deltaY, int scrollX,
            int scrollY, int scrollRangeX, int scrollRangeY,
            int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
        // 当listview滑动超出范围的时候,回调该方法,并提供参数做处理
        return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX,
                scrollRangeY, maxOverScrollX, mMaxYOverscrllDistance, isTouchEvent);
    }

}

@SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

        setContentView(linearLayout);

        MyListView listview = new MyListView(this);
        //设置上拉的显示图片
        listview.setOverscrollHeader(getResources().getDrawable(R.drawable.ic_launcher));

        linearLayout.addView(listview, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, 
                new String[]{
                "a","b","c","d","e","f","g","h","l","n","a","b","c","d","e","f","g","h","l","n"
        });

        listview.setAdapter(adapter);

    }

 -就是这么简单,就是这么任性实现listview上下拉伸回弹效果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值