android仿照ipone的弹性效果

package com.example.bounce;



import android.content.Context;

import android.util.AttributeSet;

import android.util.DisplayMetrics;

import android.widget.ListView;

 

public class BounceListView extends ListView{

    private static final int MAX_Y_OVERSCROLL_DISTANCE = 200;

     

    private Context mContext;

    private int mMaxYOverscrollDistance;

     

    public BounceListView(Context context){

        super(context);

        mContext = context;

        initBounceListView();

    }

     

    public BounceListView(Context context, AttributeSet attrs){

        super(context, attrs);

        mContext = context;

        initBounceListView();

    }

     

    public BounceListView(Context context, AttributeSet attrs, int defStyle){

        super(context, attrs, defStyle);

        mContext = context;

        initBounceListView();

    }

     

    private void initBounceListView(){

        //get the density of the screen and do some maths with it on the max overscroll distance

        //variable so that you get similar behaviors no matter what the screen size

         

        final DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();

            final float density = metrics.density;

         

        mMaxYOverscrollDistance = (int) (density * MAX_Y_OVERSCROLL_DISTANCE);

    }

     

    @Override

    protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent){ 

        //This is where the magic happens, we have replaced the incoming maxOverScrollY with our own custom variable mMaxYOverscrollDistance; 

        return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, mMaxYOverscrollDistance, isTouchEvent);  

    }

     

}

  

package com.example.bounce;

import java.util.ArrayList;

import java.util.List;



import android.app.Activity;

import android.os.Bundle;

import android.widget.ArrayAdapter;

 

public class BounceListViewActivity extends Activity {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_bounce_list_view);

        BounceListView mBounceLv = (BounceListView)findViewById(R.id.list);

        mBounceLv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,getData()));

    }

    private List<String> getData(){

         

        List<String> data = new ArrayList<String>();

        data.add("测试数据1");

        data.add("测试数据2");

        data.add("测试数据3");

        data.add("测试数据4");

        data.add("测试数据5");

        data.add("测试数据6");

        data.add("测试数据7");

        data.add("测试数据8");

        data.add("测试数据9");

        data.add("测试数据10");

        data.add("测试数据11");

        data.add("测试数据12");

        data.add("测试数据13");

        return data;

    }

}

  

你可能感兴趣的:(android)