`

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特效

    标题中的“android listview仿iphone特效”指的是在Android开发中,使用ListView组件实现类似iOS界面效果的一种技术。这种效果通常包括但不限于平滑滚动、动态高度调整、渐变背景等,目的是提升Android应用的用户...

    分组listview

    这个场景下,"仿iPhone ListView"指的是模仿iOS中类似TableView的交互效果,特别是其在滑动时保持分组标题可见的功能。"pinned-section-listview-master"这个压缩包文件名暗示了它可能包含一个实现此功能的开源库。 ...

    Android编程仿Iphone拖动相片特效Gallery的简单应用示例

    2. **BaseAdapter**:这是Android中用于填充各种可滚动视图(如ListView、GridView、Gallery等)的数据适配器。它需要重写`getCount()`、`getItem()`、`getItemId()`和`getView()`方法。 3. **ImageView.ScaleType**...

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

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

    网上搜集的各种源码

    6. **仿iPhone的ListView下拉更新**:这个功能类似于Android的下拉刷新,但在视觉效果上模仿了iOS的风格。这需要对iOS的设计规范有深入理解,并能用相应的UI库(如Android的Material Design库)实现类似的动画效果。...

    jQuery苹果系统向左滑动删除特效特效代码

    &lt;ul data-role="listview" id="swipe-list"&gt; &lt;li class="swipe-item"&gt;Item 1 &lt;li class="swipe-item"&gt;Item 2 ... ``` 然后,我们利用jQuery来监听触摸事件,当用户在列表项上滑动时,显示删除按钮或执行删除...

    android实用案例-开发参考必备

    8. **CustomGalleryLikeiPhone(3D相册)**:此案例可能实现了类似iPhone的3D相册效果,通过自定义Gallery并结合3D转场动画来达到视觉上的增强。 9. **Android远程登录含有loading登录效果**:登录界面通常包含...

    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 全屏幕以按钮...

Global site tag (gtag.js) - Google Analytics