博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SlidingTutorial-Android
阅读量:6226 次
发布时间:2019-06-21

本文共 7314 字,大约阅读时间需要 24 分钟。

hot3.png

Cleveroad介绍了滑动教程库为Android

嘿,伙计们,希望你还没有开始开发Android应用教程然而,当我们已经完成了自己的工作的一部分。别担心,我们只从良好的动机行事。我们的目标是帮助您创建在一个快速和简单的方式滑动教程。因此,我们已经做了一些工作,瞧!一个简单的Android滑动教程库为您服务。

本发明是要缓解结构设计问题,但不能在同一时间限制你的想象力的舒展。我们采取了适应性方面的照顾。所以,你的应用程序是不会看其他Android元素之间的外星人。

请阅读我们的 以确保您不会错过任何一个细节

应用视差效果会让你的产品介绍样子谷歌应用程式教程。

所有你需要做的是:

1.您的教程的每个屏幕创建背景设计(与移动设计协助)

2.您的教程的每个屏幕创建图标

3.按照下面的说明

运用

首先,添加依赖的gradle到您的build.gradle:

 
dependencies{
compile'com.cleveroad:slidingtutorial:1.0.3'
}

有利用图书馆的两种常见的变种:通过 并通过 。

通过教程PageProvider

你必须创建页面片段,每个片段必须从扩大 ,覆盖 和 。你也需要创建图像布局的xml文件。

publicclass FirstCustomPageFragmentextends PageFragment{
 
@Override
protectedintgetLayoutResId(){
returnR.layout.fragment_page_first;
}
 
@Override
protectedTransformItem[]provideTransformItems(){
returnnewTransformItem[] {
//TransformItem.create(view for transform, moving direction, shiftcoefficient)
TransformItem.create(R.id.ivFirstImage,Direction.LEFT_TO_RIGHT,0.2f),
TransformItem.create(R.id.ivSecondImage,Direction.RIGHT_TO_LEFT,0.06f),
TransformItem.create(R.id.ivThirdImage,Direction.LEFT_TO_RIGHT,0.08f),
TransformItem.create(R.id.ivFourthImage,Direction.RIGHT_TO_LEFT,0.1f),
TransformItem.create(R.id.ivFifthImage,Direction.RIGHT_TO_LEFT,0.03f),
TransformItem.create(R.id.ivSixthImage,Direction.RIGHT_TO_LEFT,0.09f),
TransformItem.create(R.id.ivSeventhImage,Direction.RIGHT_TO_LEFT,0.14f),
TransformItem.create(R.id.ivEighthImage,Direction.RIGHT_TO_LEFT,0.07f)
};
}
}

通过 实例 .

publicclass CustomTutorialFragmentextends TutorialFragment{
privatestaticfinalintTOTAL_PAGES=3;
privatefinalTutorialPageProvider
mTutorialPageProvider =newTutorialPageProvider
(){
@NonNull
@Override
publicFragment providePage(intposition){
switch(position) {
case0:
returnnewFirstCustomPageFragment();
case1:
returnnewSecondCustomPageFragment();
case2:
returnnewThirdCustomPageFragment();
default:
thrownewIllegalArgumentException("Unknownposition: "+position);
}
}
};
 
@Override
protectedTutorialOptions provideTutorialOptions(){
returnnewTutorialOptionsBuilder(getContext())
.setPagesCount(TOTAL_PAGES)
.setTutorialPageProvider(mTutorialPageProvider)
.build();
}
}

通过教程页面OptionsProvider

或者你也可以创建 并将它传递给 。它会自动提供 实例指定 组态。

publicclass CustomTutorialFragmentextends TutorialFragment{
privatestaticfinalintTOTAL_PAGES=3;
privatefinalTutorialPageOptionsProvider mTutorialPageOptionsProvider =newTutorialPageOptionsProvider() {
@NonNull
@Override
publicPageOptions provide(intposition){
@LayoutResintpageLayoutResId;
TransformItem[]tutorialItems;
switch(position) {
case0:{
pageLayoutResId=R.layout.fragment_page_first;
tutorialItems=newTransformItem[]{
TransformItem.create(R.id.ivFirstImage,Direction.LEFT_TO_RIGHT,0.2f),
TransformItem.create(R.id.ivSecondImage,Direction.RIGHT_TO_LEFT,0.06f),
TransformItem.create(R.id.ivThirdImage,Direction.LEFT_TO_RIGHT,0.08f),
TransformItem.create(R.id.ivFourthImage,Direction.RIGHT_TO_LEFT,0.1f),
TransformItem.create(R.id.ivFifthImage,Direction.RIGHT_TO_LEFT,0.03f),
TransformItem.create(R.id.ivSixthImage,Direction.RIGHT_TO_LEFT,0.09f),
TransformItem.create(R.id.ivSeventhImage,Direction.RIGHT_TO_LEFT,0.14f),
TransformItem.create(R.id.ivEighthImage,Direction.RIGHT_TO_LEFT,0.07f)
};
break;
}
case1:{
pageLayoutResId=R.layout.fragment_page_second;
tutorialItems=newTransformItem[]{
TransformItem.create(R.id.ivFirstImage,Direction.RIGHT_TO_LEFT,0.2f),
TransformItem.create(R.id.ivSecondImage,Direction.LEFT_TO_RIGHT,0.06f),
TransformItem.create(R.id.ivThirdImage,Direction.RIGHT_TO_LEFT,0.08f),
TransformItem.create(R.id.ivFourthImage,Direction.LEFT_TO_RIGHT,0.1f),
TransformItem.create(R.id.ivFifthImage,Direction.LEFT_TO_RIGHT,0.03f),
TransformItem.create(R.id.ivSixthImage,Direction.LEFT_TO_RIGHT,0.09f),
TransformItem.create(R.id.ivSeventhImage,Direction.LEFT_TO_RIGHT,0.14f),
TransformItem.create(R.id.ivEighthImage,Direction.LEFT_TO_RIGHT,0.07f)
};
break;
}
case2:{
pageLayoutResId=R.layout.fragment_page_third;
tutorialItems=newTransformItem[]{
TransformItem.create(R.id.ivFirstImage,Direction.RIGHT_TO_LEFT,0.2f),
TransformItem.create(R.id.ivSecondImage,Direction.LEFT_TO_RIGHT,0.06f),
TransformItem.create(R.id.ivThirdImage,Direction.RIGHT_TO_LEFT,0.08f),
TransformItem.create(R.id.ivFourthImage,Direction.LEFT_TO_RIGHT,0.1f),
TransformItem.create(R.id.ivFifthImage,Direction.LEFT_TO_RIGHT,0.03f),
TransformItem.create(R.id.ivSixthImage,Direction.LEFT_TO_RIGHT,0.09f),
TransformItem.create(R.id.ivSeventhImage,Direction.LEFT_TO_RIGHT,0.14f)
};
break;
}
default:{
thrownewIllegalArgumentException("Unknownposition: "+position);
}
}
 
returnPageOptions.create(pageLayoutResId,position, tutorialItems);
}
};
 
@Override
protectedTutorialOptions provideTutorialOptions(){
returnnewTutorialOptionsBuilder(getContext())
.setPagesCount(TOTAL_PAGES)
.setTutorialPageProvider(mTutorialPageOptionsProvider)
.build();
}
}

与应用程序兼容性库(推荐方式)使用

下面是在代码中使用更改列表 SlidingTutorial 库 AppCompat 图书馆:

  • 您的片段页必须扩展 。

  • 您的教程片段必须扩展 .

  • 必须提供 android.support.v4.app.Fragment 实例。就这样。

定制

设置跳过按钮点击监听器

你必须实现 View.OnClickListener 接口,并提供给 . 例:

publicclass CustomTutorialFragmentextends TutorialFragment{
@Override
protectedTutorialOptions provideTutorialOptions(){
returnnewTutorialOptionsBuilder(getContext())
.setOnSkipClickListener(newView.OnClickListener() {
@Override
publicvoidonClick(Viewv){
Toast.makeText(getContext(),"Skipbutton clicked",Toast.LENGTH_SHORT).show();
}
})
//setup other configuration ...
.build();
}
}

设置页面颜色

只需提供颜色值的数组 . 颜色数组的长度必须等于页面数。

publicclass CustomTutorialFragmentextends TutorialFragment{
privatestaticfinalintTOTAL_PAGES=3;
privateint[]pagesColors =newint[] { Color.RED,Color.BLUE,Color.DKGRAY};
@Override
protectedTutorialOptions provideTutorialOptions(){
returnnewTutorialOptionsBuilder(getContext())
.setPagesCount(TOTAL_PAGES)
.setPagesColors(pagesColors)
//setup other configuration ...
.build();
}
}

无限滚动

要循环教程页面已设置 至

true

从去年的教程页面滚动到你的内容 – 自动删除片段教程

如果你想提供从去年的教程页面平滑过渡到内容 – 只是设置 至 true

指标视图定制

有 类配置指标视图。这里的例子:

publicclass CustomTutorialFragmentextends TutorialFragment{
@Override
protectedTutorialOptions provideTutorialOptions(){
returnnewTutorialOptionsBuilder(getContext())
.setIndicatorOptions(IndicatorOptions.newBuilder(getContext())
.setElementSizeRes(R.dimen.indicator_size)
.setElementSpacingRes(R.dimen.indicator_spacing)
.setElementColorRes(android.R.color.darker_gray)
.setSelectedElementColor(android.R.color.white)
.setRenderer(Drawable.create(getContext()))
.build())
//setup other configuration ...
.build();
}
}

正如你所看到的,您可以指定元素大小,元间距(即填充),元素的颜色,选择元素颜色和实施 接口。里面有2默认实现 :

  • - 绘制圆形指标

  • - 绘制方形指标

此外样品模块中有两种实现方式:

  • - 绘制绘制背景指标

  • - 绘制菱形指标

添加OnTutorialPageChangeListener

你可以听的改变页面事件 – 只是实现 并通过添加监听器 . 要删除监听器使用 . 在 方法您将收到一个页面索引每次页面的变化。如果启用 至 如此,您将收到 TutorialFragment.EMPTY_FRAGMENT_POSITION (要么 TutorialSupportFragment.EMPTY_FRAGMENT_POSITION 如果您正在使用支持库)的页面索引。

publicclass CustomTutorialFragmentextends TutorialFragment
implementsOnTutorialPageChangeListener{
privatestaticfinalString TAG="CustomTutorialFragment";
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
addOnTutorialPageChangeListener(this);
}
@Override
publicvoidonPageChanged(intposition){
Log.i(TAG,"onPageChanged:position = "+position);
if(position ==TutorialFragment.EMPTY_FRAGMENT_POSITION){
Log.i(TAG,"onPageChanged:Empty fragment is visible");
}
}
}

GitHub link - 

转载于:https://my.oschina.net/david46/blog/745940

你可能感兴趣的文章
Spring Cloud Alibaba迁移指南(二):零代码替换 Eureka
查看>>
聊聊BOM的那些事
查看>>
Apache Pulsar中的地域复制,第1篇:概念和功能
查看>>
getRealPath()和getContextPath()的区别
查看>>
Hadoop MapReduce编程 API入门系列之wordcount版本2(六)
查看>>
一个页面标题和过滤输出的解决方案(上)
查看>>
解决windows使用rsync同步到Linux权限问题
查看>>
python pip install 出现 OSError: [Errno 1] Operation not permitted
查看>>
【九度OJ1367】|【剑指offer24】二叉搜索树的后序遍历序列
查看>>
android4.4以上透明状态栏简单设置
查看>>
双十一流量洪峰 支撑阿里核心业务的云数据库揭秘
查看>>
oracle12C 重做日志
查看>>
数据结构与算法4
查看>>
Metasploit 之 modules 与plugins 区别
查看>>
mysql的常用函数
查看>>
完善的复数类(二十五)
查看>>
java书籍列表
查看>>
python初学-列表和字典的几个小例子
查看>>
我的友情链接
查看>>
数据分析入门及职业规划
查看>>