如何实现Android 4.0像滑动以解除ListView中的功能?

时间:2012-02-26 12:19:40

标签: android listview tabs android-browser

我正在开发一个应用程序,我希望在ListView中实现滑动到解除功能 - 类似于我们在Android 4.0的通知栏,最近的应用列表或浏览器标签中看到的功能。我想在运行Android 2.2+的设备上运行该应用程序。请参见下图。我还想改变被擦掉项目的透明度 - 就像在ICS中一样。

Android 4.0 Web Browser - Swiping away the open tabs http://img19.imageshack.us/img19/3605/screenshot2012022617290.png

我在http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/4.0.1_r1/com/android/browser/TabScrollView.java?av=f上检查了ICS网络浏览器的来源,但无法确定哪个类特别负责实现此功能。

有人能指出我在正确的方向吗?我们可以使用Android兼容性库吗?请告诉我。非常感谢。

2 个答案:

答案 0 :(得分:3)

我也考虑过实现这样一个功能,但我还没有完成。所以我唯一能提供的就是 I 如何解决这个问题。如果我最终写了一些代码,我会在这里发布。

  1. 需要的主要类是一个自定义适配器,它扩展了ListAdapter(ArrayAdapter,SimpleCursorAdapter等)。
  2. 适配器将View.OnTouchListener应用于其所有视图。
  3. 只要该侦听器检测到水平滚动dx,它就会调用concernedView.offsetLeftAndRight(dx)(这将使视图可拖动)。当然适配器必须保存视图的当前水平偏移量。如果用户正在拖动视图并从屏幕上移除他/她的手指,则touchListener也会检测到这一点并开始向后滑动动画。使用当前偏移量我们也可以计算一个alpha值,因此当它接近屏幕边界时视图会淡出。
  4. 如果一个列表条目最终被用户解雇,它会变得有点棘手,我仍然不确定如何实现以下操作:列表内容必须更新(或者适配器必须忽略被驳回的条目)以及被解雇的观点之下的观点必须向上徘徊以填补空白。我认为让ListView加载新内容可能会有用,但这会立即填补空白。为了避免这种情况,我会启动一个动画,让所有相关的视图从旧位置(我们仍然有间隙)回到当前位置(填充间隙的位置)。
  5. 这些只是我对这个问题的一些想法,可能会帮助一些人开始解决这个问题。就像我说的那样,我可能会在未来的某个时候实施,当然我会在这里发布代码 我很感激评论中的任何反馈,但我不想彻底解释我的想法的每一个方面,这将花费我太多的时间;)

答案 1 :(得分:0)

我知道这是一个很老的问题,但是对于仍然在寻找这个问题的人,你可以在这里查看Roman Nurik的图书馆:https://github.com/romannurik/Android-SwipeToDismiss

这显示了如何为列表视图和普通视图创建所需的行为。