读书人

Listview仿Iphone奇效(转)

发布时间: 2012-08-07 14:54:47 作者: rapoo

Listview仿Iphone特效(转)

主程序代码:

?

private SimpleAdapter listItemAdapter;  // ListView的适配器private ArrayList<HashMap<String, Object>> listItem;  // ListView的数据源,这里是一个HashMap的列表private IphoneListView myList;  // ListView控件public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);listItem = new ArrayList<HashMap<String, Object>>();        listItemAdapter = new SimpleAdapter(this, listItem, R.layout.list_item,        new String[]{"title", "text"},        new int[]{R.id.ItemTitle, R.id.ItemText});        myList = new IphoneListView(this);        myList.setAdapter(listItemAdapter);        setContentView(myList);                addItem("1窗口","1窗口");        addItem("2窗口","2窗口");        addItem("3窗口","3窗口");        addItem("4窗口","4窗口");        addItem("5窗口","5窗口");        addItem("6窗口","6窗口");        addItem("7窗口","7窗口");}private void addItem(String title , String str){    HashMap<String, Object> map = new HashMap<String, Object>();        map.put("title", title);        map.put("text", str);        listItem.add(map);        listItemAdapter.notifyDataSetChanged();    }

?

?

?

IphoneListView类代码:

public class IphoneListView extends ListView implements Runnable {private float mLastDownY = 0f;private int mDistance = 0;private int mStep = 10;private boolean mPositive = false;public IphoneListView(Context context, AttributeSet attrs) {super(context, attrs);}public IphoneListView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}public IphoneListView(Context context) {super(context);}@Overridepublic boolean onTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:if (mLastDownY == 0f && mDistance == 0) {mLastDownY = event.getY();return true;}break;case MotionEvent.ACTION_CANCEL:case MotionEvent.ACTION_UP:if (mDistance != 0) {mStep = 1;mPositive = mDistance >= 0;this.post(this);return true;}mLastDownY = 0f;mDistance = 0;break;case MotionEvent.ACTION_MOVE:if (mLastDownY != 0f) {mDistance = (int) (mLastDownY - event.getY());if ((mDistance < 0 && getFirstVisiblePosition() == 0 && getChildAt(0).getTop() == 0)|| (mDistance > 0 && getLastVisiblePosition() == getCount() - 1)) {mDistance /= 2;scrollTo(0, mDistance);return true;}}mDistance = 0;break;}return super.onTouchEvent(event);}public void run() {mDistance += mDistance > 0 ? -mStep : mStep;scrollTo(0, mDistance);if ((mPositive && mDistance <= 0) || (!mPositive && mDistance >= 0)) {scrollTo(0, 0);mDistance = 0;mLastDownY = 0f;return;}mStep += 1;this.postDelayed(this, 10);}}

?IphoneListView类代码来源:http://hemowolf.iteye.com/blog/1181065


Listview仿Iphone奇效(转)

Listview仿Iphone奇效(转)

读书人网 >Iphone

热点推荐