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;    }}

  

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. Android架构分析之Android开发环境搭建
  2. android 默认应用安装在sd卡中 (>2.2)
  3. android 5.0 默认水波纹背景属性,可设置
  4. android中gallery的使用
  5. Android重要控件概览(上)
  6. Android DrawerLayout 侧边栏使用之道
  7. Android 打勾显示输入的密码
  8. Android 开发环境安装配置手册
  9. Android(安卓)MonkeyRunner测试NotePad例
  10. MainFest.xml android