`

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

	@Override
	public 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


  • 大小: 22.8 KB
  • 大小: 24.5 KB
分享到:
评论

相关推荐

    android listview仿iphone特效

    NULL 博文链接:https://obacow.iteye.com/blog/1181065

    Andorid项目实例安卓源代码84套.zip

    Android 竖着的SeekBar 人员列表,聊天的实现,包括图片,语音 通讯录的开发_完整代码 Android_炫酷的3D音乐播放器_各种特效OpenGL Android多媒体 Android音视频的编解码 ...仿iphone的listview下拉更新

    android开发资料大全

    Android 小項目之---Iphone拖动图片特效 (附源码) 一个完整的新浪微博客户端android版OAuth认证示例 超爽的android抽屉效果 65个Android实例教程汇总 基本控件及基本动画效果dem 2011android面试题目及其答案大全...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

    Google Android SDK开发范例大全的目录

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

    Google+Android+SDK开发范例大全

    3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView的交互 3.14 控制不同的文字字体——Typeface对象使用 3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以...

    Google Android SDK 开发范例大全01

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

    Google Android SDK 开发范例大全02

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

    Google Android sdk 开发范例大全 部分章节代码

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

    Google Android SDK开发范例大全(完整版)

    3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮...

    JAVA上百实例源码以及开源项目

    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    学完了这阶段课程,学员将学会开发主流网站的前端效果,比如:焦点图、滚动展示图、网页防复制、网页自定义菜单、WebOS、美女时钟、无刷新评论、评分控件、表格特效、图片悬浮详细信息、微博界面、QQ消息框效果、Div...

    JAVA上百实例源码以及开源项目源代码

    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...

Global site tag (gtag.js) - Google Analytics