在他们最新版本的应用中,Google已经实现了一种非常酷的方式,即在标签与点击标题标题之间进行滑动。我想知道是否有人对如何做到这一点有更具体的想法。
以下是一些想法 - 随意批评:
我最初的想法是,这不是承载儿童活动的标准TabActivity
。事实上,我甚至认为它不是自定义ActivityGroup
。滑动时,标签行会滚动,但不会导致活动标签切换。
刷选标签的主要内容表现出有趣的行为。我怀疑有一个GestureListener附加到主要内容区域。在滑动标签时,相邻标签的行变得可见。这似乎表明这是一个可水平滚动的ListView
s组。它几乎就像一个可水平滚动的HTML div,其中所有内容已经存在但在刷卡时进入视图。我不确定如何处理行的渲染(传统上,当向上/向下滚动列表而不是左/右时,构建和显示行)。那也许它也是一个自定义的ListView
实现呢?如果不是左右滚动,它的行为与您期望的常规ListView
相同,包括下拉时的快速滚动和发光效果。
标签行可能是ScrollView
,滑动到边缘时的发光效果就是证明。选项卡内容的行不是。
我正在尝试构建一个包含这个非常漂亮的UI的不同部分的心理模型。任何见解都非常感激。
答案 0 :(得分:2)
答案 1 :(得分:1)
主屏幕具有相同的比喻:多个页面,您可以在地平线上滑动,每个屏幕都可以完成它的工作。它具有“锁定”行为(如果你轻扫它会跳转到新标签,但是如果你没有滑动到足够的位置它会弹回到已经可见的屏幕),除了它而不是底部的小点。主屏幕使用选项卡作为您所在页面的指示器。
正如您所说,标签不会滚动。此外,在滑动过程中,您实际上不能垂直滚动,因此它实际上是一个简单的实现,类似于您可以找到的here。我想多点触控你可以让它垂直滚动,但它真的很奇怪,而且很大程度上是不必要的:很酷看,但实用性有限。除了标准ListView
之外,ListView
不需要做任何其他事情。顶部可能有一个自定义的基于按钮的选项卡小部件,并且基于滚动,按钮样式会更新以突出显示正确的选项卡。这就是它。
答案 2 :(得分:1)
Youtube应用的布局如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout ...>
...
<TabRow android:id="@id/tabrow" .../>
<Workspace android:id="@id/workspace" ...>
<ListView android:id="@id/uploads" ... />
<ListView android:id="@id/favorites" ... />
<ListView android:id="@id/playlists" ... />
<ListView android:id="@id/subscriptions" ... />
</Workspace>
</LinearLayout>
谷歌推出了两款也在音乐应用中使用的小部件:
com.google.android.youtube.ui.TabRow。
TabRow扩展HorizontalScrollView
com.google.android.youtube.ui.Workspace
Workspace扩展了ViewGroup
关于实施,好吧,任何人都可以使用“正确的工具”偷看。但这会给出一些粗略的代码,也许是不正确的代码。我试了一下,没有太多运气。我认为有些人有动力并且有goog技能。
其他解决方案和更好的解决方案:我希望Google尽快发布lib或这些类的代码。这个GUI真的很高兴使用。
答案 3 :(得分:1)
您可以将标签放在空框架内。
使用GestureDetector.SimpleOnGestureDetector
方法覆盖onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
到该框架。
您可以在希望标签实际更改之前确定需要多大的强力。使用e1
和e2
之间的累积距离。
请务必在fals
上退回onFling
e,否则触摸事件不会落到以下视图中。
答案 4 :(得分:1)
我认为你指的是Workspace-Pattern。不幸的是,谷歌并未将其作为标准,因此您必须自己实施。
为此,您应该使用ViewPager或FragmentPagerAdapter(Programming Example)。
答案 5 :(得分:0)
我相信我找到了你想要的解决方案。标签实际上位于应用的操作栏中:
http://developer.android.com/guide/topics/ui/actionbar.html#Tabs
此外, Android for Programmers - App-Driven Approach (ISBN 0132121360)的第14章完全专注于此操作栏标签系统。