git://www.github.com/pakerfeldt/android-viewflow.git
git clone http://www.github.com/pakerfeldt/android-viewflow
$ svn co --depth empty http://www.github.com/pakerfeldt/android-viewflow
Checked out revision 1.
$ cd repo
$ svn up trunk
ViewFlow是一个 Android UI小部件提供水平滚动 ,带有从一个适配器窗口填充的条目。 向下滚动到页面底部以进行屏幕快照。
组件是一个库项目项目。 这意味着不需要复制粘贴资源到你自己的项目中,只需将viewflow组件作为引用添加到任何项目中。
如果viewflow中的视图数量不确定,那么这个库可能合适,如果你在兼容性库中有一个视图,你应该查看和 ViewPager,而不需要使用它。
<org.taptwo.android.widget.ViewFlow
android:id="@+id/viewflow"
app:sidebuffer="5"
/>
使用 app:sidebuffer
是可选的。 它定义了当前所显示视图的每一侧要缓冲的视图数。 默认sidebuffer为 3,在时间( 在最大) 中加载的( 3 * 2 + 1 ) 视图总数大约为 7个视图。 为了能够使用更方便的app:sidebuffer
属性,必须以与android名称空间相同的方式包含应用程序名称空间。 请参考示例项目中的布局 main.xml 以获得完整示例。 再次注意,它是应用程序命名空间和 ,而不是必须引用的命名空间xmlns:app="http://schemas.android.com/apk/res/your.application.package.here"
ViewFlow viewFlow = (ViewFlow) findViewById(R.id.viewflow);
viewFlow.setAdapter(myAdapter);
设置不同的初始位置( 0默认值) 就像下面这样简单:
viewFlow.setAdapter(myAdapter, 8);
尽管可能,在调用 setAdapter(myAdapter)
之后不应该立即调用 setSelection(...)
,因为这样可以加载不必要的视图,从而降低性能。
如果你需要监听屏幕更改事件,你需要实现自己的ViewFlow.ViewSwitchListener
并将它的传递给 setOnViewSwitchListener()
方法。
viewFlow.setOnViewSwitchListener(new ViewSwitchListener() {
public void onSwitched(View v, int position) {
//Your code here
}
});
如果需要延迟视图初始化,你需要实现自己 ViewFlow.ViewLazyInitializeListener
并将它的传递给 setOnViewLazyInitializeListener()
方法。
viewFlow.setOnViewLazyInitializeListener(new ViewLazyInitializeListener() {
public void onViewLazyInitialize(View view, int position) {
//Your code here e.g.
((MyAdapter)((AbsListView)view).getAdapter()).initializeData();
}
});
还可以在布局中添加流视图指示器。 FlowIndicator
的目的是呈现在项列表焦点所在的位置的可视表示形式。 你可以自己实现 FlowIndicator
,也可以使用视图流库提供的实现。 View流库当前支持以下指标:
这里指示器为适配器中的每个 View
显示一个圆圈,其中有一个代表当前选定视图( 查看下面的截图)的特殊圆。
<org.taptwo.android.widget.CircleFlowIndicator
android:padding="10dip" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:id="@+id/viewflowindic"
android:background="#00000000"/>
然后,你需要将 ViewFlow
与 FlowIndicator
连接:
CircleFlowIndicator indic = (CircleFlowIndicator) findViewById(R.id.viewflowindic);
viewFlow.setFlowIndicator(indic);
默认情况下,'活动的'指示器从一个'非活动'指示器平滑移动到下一个指示器,因为用户滚动。 如果将 snap
属性设置为 true
,它将在流在下一页上运行时跳转到下一个位置。
支持以下属性: activeColor
,inactiveColor
,activeType
( 填充或者笔划),inactiveType
( 填充或者笔划),fadeOut
( ms中的时间,直到指示器淡出,0 = 从不),radius
,sync
( 请参见上方) 。
这里指示器显示适配器( 查看下面的截图) 中的前一个。当前和下一个 View
的标题。
<org.taptwo.android.widget.TitleFlowIndicator
android:id="@+id/viewflowindic" android:layout_height="wrap_content"
android:layout_width="fill_parent"
app:footerLineHeight="2dp"
app:footerTriangleHeight="10dp" app:textColor="#FFFFFFFF" app:selectedColor="#FFFFC445"
app:footerColor="#FFFFC445" app:titlePadding="10dp" app:textSize="11dp" app:selectedSize="12dp"
android:layout_marginTop="10dip"
app:clipPadding="5dp"/>
然后,你需要将 ViewFlow
与 FlowIndicator
连接:
TitleFlowIndicator indicator = (TitleFlowIndicator) findViewById(R.id.viewflowindic);
indicator.setTitleProvider(myTitleProvider);
viewFlow.setFlowIndicator(indicator);
如果希望使用 jar 文件而不是包含项目作为android库,请在 android-viewflow/viewflow
文件夹中运行 ant jar
,以构建 jar 文件。
Manifest 声明一个最小sdk版本 4,它是 true 。 但是无论如何,你需要支持一个api级别 <8,你必须将 onConfigurationChanged
事件转发到你的Activity
中的ViewFlow
。 我知道这不是一个很好的解决方案,请随意提出更好的建议 !
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
viewFlow.onConfigurationChanged(newConfig);
}
以下人员应该对他们的贡献有所提及:
GitHub上有一些关于如何开始Git和 GitHub 以及如何处理项目的精彩文章。
推荐Contributers在 GitHub ( 但也没有) 上进行 fork 应用。 创建一个特性分支,将分支推到git中心,按拉请求并编写一个简单的解释。
每次提交都修复一次。如果假设提交关闭了打开的问题 12. 只要在提交消息中添加 closes #12
即可自动关闭该问题。
如果你仍然感到不舒服的项目为,不要hesistate发送一个常规修补程序。
所有贡献的代码都必须符合 Apache许可证 2.0 。
许可证在许可证下,版本 2.0