您的位置:首页 > 移动开发 > Android开发

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

2015-05-07 11:24 579 查看

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

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

[code]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上下拉伸回弹效果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: