`
hemowolf
  • 浏览: 154419 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

android listview仿iphone特效

阅读更多

  ios常见视图在顶部往下拉(下冲)或底部往上拉(上冲)有一个弹性回退的动画效果。著名的CM ROM和一些手机厂商也争相集成这种效果。android 从2.3开始实现了下冲到底部和上冲到顶部时颜色渐变动画效果。这种在iphone中经典的特效在一定程度上满足了android迷们追逐体验的需求。下面我们来探讨实现这种效果的思路和实现锥形。

  view类有两个很重要的方法scrollTo和scrollBy,允许移动视图的可见区域。这就是我们今天实现动画效果的理论基础,我们可以在android数据列表顶部往下拖动列表或底部往上拖动列表时相应的移动数据列表,当停止拖动时再让它弹回去。那么怎么才能知道在顶端和底部呢?请查阅ListView的相关资料。具体的原理讲完了上代码。

 

package com.droidwolf;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ListView;
//by droidwolf 转载请注明
public class IpListView extends ListView implements Runnable {
    private float mLastDownY = 0f;
    private int mDistance = 0;
    private int mStep = 10;
    private boolean mPositive = false;

    public IpListView(Context context, AttributeSet attrs) {
	super(context, attrs);
    }

    public IpListView(Context context, AttributeSet attrs, int defStyle) {
	super(context, attrs, defStyle);
    }

    public IpListView(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);
    }

    @Override
    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);
    }
}// end class

 

IpListView实现的动画只是简单的回退效果,也没有实现上冲和下冲特效,具体实现留给您去完善吧~~

 

分享到:
评论
3 楼 qxj00 2012-04-25  
感谢感谢~~~~~~
2 楼 wly1028 2012-04-08  
厉害,学习之!!!
1 楼 dengzhangtao 2011-09-27  
太感谢了学习了

相关推荐

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

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

    分组listview

    总的来说,分组ListView和仿iPhone的滑动标题效果是提升Android应用用户体验的有效手段。通过自定义Adapter和滑动监听,或者利用现有的开源库,我们可以轻松实现这一功能,为用户提供更直观、更友好的数据浏览体验。...

    android开发资料大全

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

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

    【Android实用案例-开发参考必备】集合了众多Android开发中的经典示例,这些案例涵盖了Android开发的多个重要领域,包括用户界面(UI)设计、数据处理、特效实现以及应用程序更新等。以下是对这些案例的详细解析: ...

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

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

    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开发范例大全(PDF完整版4)(4-4)

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

    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开发范例大全的目录

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

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

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

    网上搜集的各种源码

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

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

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

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

    Google Android SDK开发范例大全.docx

    - **3.15 如iPhone拖动相片特效——Gallery画廊** 讨论了如何实现类似于iOS中相册应用的效果,即通过滑动查看图片。 - **3.16 自制计算器——多按钮的整合应用** 通过创建一个简单的计算器应用,演示了如何整合...

    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