对于循环播放:自动、定时、无限 & 循环播放 对于支持手动切换:滑动流畅 & 无卡顿 对于支持加载本地 & 网络图片:加载速度 & 点击打开图片 好了你终于明白为什么要选择轮子了 2....性能的优化 上面说的一切一切,比如说轮播是用ViewPager实现,但会出现卡顿什么的blabla 配置程度高 可灵活设置图片数量、循环时间、图片加载的方式、指示器的样式&位置等等 简洁易用 千万别忘了我们为什么要用轮子...指示器居中 //Banner.RIGHT 指示器居右 banner.setIndicatorGravity(Banner.CENTER); //设置轮播要显示的标题和图片对应...load(url).into(view); System.out.println("加载完"); } }); //设置点击事件...,下标是从1开始 banner.setOnBannerClickListener(new Banner.OnBannerClickListener() {//设置点击事件
R.layout.viewpager_page ? 2.2 设置soreButton监听事件(具体的可以参考GIt上面的Demo) ?...界面:分为两部分,上面的按钮以及下面的指示点。上面使用ViewPager作为View的容器,下面的指示器用LinearLayout将动态创建的ImageView添加进去。...和普通的布局没啥区别,外层LinearLayout垂直布局,其中有ViewPager作为滑动切换的容器,内部的LinearLayout作为指示器容器。 2....定义了一个数组,用来放置指示器的点,通过循环pageSize来动态创建ImageView,然后判断i来将第一页的ImageView设置为选中的点,其余设置为未选中的点。...当然这样还不行,在viewPager滑动的时候我们得更新指示器上的点 我们对ViewPager设置了监听事件setOnPageChangeListener,在滑动的时候会调用onPageSelected
、手指按下暂停轮播、抬起手指开始轮播 [x] 支持自定义指示器位置和广告文案位置 [x] 支持图片指示器和数字指示器 [x] 支持 ViewPager 各种切换动画 [x] 支持选中特定页面 [...x] 支持监听 item 点击事件 [x] 加载网络数据时支持占位图设置,避免出现整个广告条空白的情况 [x] 多个 ViewPager 跟随滚动 使用 1.添加 Gradle 依赖 把 maven...,在 BGABanner 里已经帮开发者处理了防止重复点击事件 mContentBanner.setDelegate(new BGABanner.Delegate(..." + position, Toast.LENGTH_SHORT).show(); }}); 5.设置「进入按钮」和「跳过按钮」控件资源 id 及其点击事件,如果进入按钮和跳过按钮有一个不存在的话就传...0,在 BGABanner 里已经帮开发者处理了防止重复点击事件,在 BGABanner 里已经帮开发者处理了「跳过按钮」和「进入按钮」的显示与隐藏 mContentBanner.setEnterSkipViewIdAndDelegate
本文是基于ViewPager实现的无限自动轮播banner: 分为四步去实现: 第一步是有限手动轮播; 第二步是无限轮播; 第三步是自动轮播; 第四步是指示器适配 第一步:有限手动轮播实现 布局: viewpager.widget.ViewPager android:id="@+id/banner" android:layout_width="match_parent...时,ViewPager的高度一定要有确定值,否则内容无法加载出来,可以在xml中指定,也可以代码设定,但一定要有确定值。...第二步:无限轮播 无限轮播只需要在有限轮播的基础上,做以下两个改动点,修改getCount返回值且在加载数据时获取正确的数据源即可 public class BannerAdapter extends...指示器样式及表现可以自己去根据需求实现,以相对简单和常见的小圆圈指示器为例,添加和banner数量相同的小圆圈,小圆圈设置selector,在选中时为黑色选中样式,在非选中时为灰色默认样式,根据当前选中的
TabLayout作为导航组件来说,使用场景非常的多,也意味着要满足各种各样的需求。...play;有了这两点,基本可以放心大胆的使用官方组件了。...可以设置带数字的红点,也可以设置没有数字单纯的一个点。...这里有一个优化的点,比如上图中的“腾讯”Tab,它是可见的,但是红点不可见,那么问题就来了,如果我们没有提示到,是很容易产生客诉的,所以这里在计算的时候也加了一个条件,就是可见范围小于80%也在计算范围之内...指示器颜色 tabIndicatorHeight 指示器高度,不显示写0dp tabIndicatorFullWidth 指示器宽度是否撑满item tabMode tab显示形式,1.auto自动,
目前市面上很多的app,在首页中都带有一个循环滚动,自动轮播的广告条,也就表明这个简单的控件是十分常用的,市面上有很多中实现方式,但基本上都是在自定义View中使用ViewPager来实现的,下面我们就来看下....view.ViewPager; import android.util.AttributeSet; import android.view.Gravity; import android.view.MotionEvent...; import android.graphics.Path; import android.support.v4.view.ViewPager; import android.util.AttributeSet...TextView) view).setTextColor(COLOR_TEXT_NORMAL); } } } /** * 设置Tab点击事件...中使用这个控件,首先在布局文件中添加次控件,然后在Activity中,绑定数据即可,对于Fragment也是一样的操作。
一、概述、 水平滚动条 可以左右滑动 可与ViewPager协同使用 二、HorizontalScrollView里边只能放一个子元素 可以放一个Layout布局对象来盛放多个元素 里边可以设置指示器...和一条基准线 可以用来做导航栏类似于ActionBar的Tab导航栏,HorizontalScrollView做导航栏可以设置指示器跟随ViewPager页面移动实现动态效果 一般点击导航栏的某一项...selectNav(0);//默认选择第一页 42 } 43 44 private void navLayoutEvent() { 45 // TODO 设置导航模块的点击事件...相关的事件 65 vPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 66...method stub 86 } 87 }); 88 } 89 90 //选择导航模块的位置,将水平滚动控件滚动到当前模块位置的中心点
、自动播放可控制 还有我们都比较关注的一点:这轮子必须易拆、易装,可扩展性强。...那就看图吧(还好会那么一点点PS) 例: 需要显示三张图: ? 需要轮播的图片 经过处理,变成这样 ? 处理后的轮播图 在界面上看到的是三张图片,而实际在ViewPager中的是这样的5张。...后面有两个LinearLayout,第一个LinearLayout用来放指示器,在java代码中动态添加;第二个LinearLayout就用来显示Title了,当然,如果还需要显示的其他内容,可以在这个布局里面中添加..." android:orientation="vertical"> android.support.v4.view.ViewPager android:id="@+id...(这段时间忙着找工作,就先搁下了,有兴趣的同学可以先尝试下。)
item showShort("效果1点击"+position); Log.i("test","-----....view.ViewPager; import android.util.Log; import android.view.View; /** * Created by Administrator...* 3D画廊效果其实就是ViewPager的item切换时,进行缩放的动画效果 * */ public class ZoomPageTransformer implements ViewPager.PageTransformer...item showShort("效果1点击"+position); Log.i("test","-----...=null){ mBanner.stopTimer(); } } 注意:(如果在RecyclerView中使用的时候,要先进行 mBanner.removeAllView
简介 一般我们的app主界面都是界面下方或者上方有指示器,结合ViewPager或者Fragment来实现。...如今,Android中也有自带这种指示器的控件TabLayout。TabLayout存在于android design库中,它提供了一个水平的布局来展示Tabs。...其中text就是指示器的文字提示。 当然了,不仅可以在不居中直接添加TabItem子标签,这样可变性不好,我们可以在代码中动态添加,节后会介绍到!...---- 4、添加TabItem标签的点击事件 tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {...有以下属性支持修改: tabIndicatorColor:指示器颜色 tabBackground:tablayout的背景颜色 tabIndicatorHeight:指示器高度 tabGravity:指示器位置
我想要的组件希望能做到以下几点: 轮播图每页的UI可以定制同时保持较小的工作量 指示器的位置、大小、背景、字体颜色、字体大小等等都可以定制 一些特殊情况,比如下图这样的可以灵活优雅地实现。...目标 将Banner的两部分分开,一部分是轮播图,另一部分是指示器,然后通过一个“点”将二者联系起来。两者本身都是单独的View,这样的话就可以在父布局中任意调整大小和位置。...常见的指示器有下面几种: 点型指示器 ? ? 数字指示器 ? 标题指示器 ? 通过分析我们知道其实呢,每种指示器需要知道两件事,一是一共有多少个页面,二是当前是哪个页面。...当然标题指示器稍微特别一点,需要知道每个页面对应得标题是什么,特殊情况特殊处理就好了。...方法校正 由于循环的实现方式,会导致ViewPager本身的一些方法都不能正常工作了,主要是一些和position相关的地方,需要修正。
当然具体实现又会有很多方式,我们本期就先来学习最简单的Tab切换吧,有一点类似于之前了解的TabHost。...如果只添加PagerTabStrip可以看到只有线,但是它占的布局是有一定高度的,而且默认是不显示标题的,如果要显示出来,需在适配器里重写getPageTitle(int position)方法。...关于标题及这条线的颜色,和整个标识View的背景,都可以在代码里设置。 还有一个区别就是,PagerTabStrip可以点击切换View,而PagerTitleStrip不能点击。...其默认显示在顶部,还可以通过android:layout_gravity 属性设置为TOP或BOTTOM将它显示在ViewPager的顶部或底部。...void onPageScrollStateChanged(int state) { } } 可以发现这里的代码和上期大致相同,只是在其中增加了滑块的位置及动画设置,为3个Tab标签监听了点击事件
& 网络图片:加载速度 & 点击打开图片 好了你终于明白为什么要选择轮子了 2....性能的优化 上面说的一切一切,比如说轮播是用ViewPager实现,但会出现卡顿什么的blabla 配置程度高 可灵活设置图片数量、循环时间、图片加载的方式、指示器的样式&位置等等 简洁易用...指示器居中 //Banner.RIGHT 指示器居右 banner.setIndicatorGravity(Banner.CENTER); //设置轮播要显示的标题和图片对应...load(url).into(view); System.out.println("加载完"); } }); //设置点击事件...,下标是从1开始 banner.setOnBannerClickListener(new Banner.OnBannerClickListener() {//设置点击事件
概念介绍 1.1 TabLayout 定义:实现Material Design效果的控件库(Android Design Support Library); 作用:用于实现点击选项进行切换选项卡的自定义效果...2.它具有自己的生命周期,接收它自己的事件,并可以在activity运行时被添加或删除 3.Fragment不能独立存在,它必须嵌入到activity中,而且Fragment的生命周期直接受所在的...总体设计思路 TabLayout:点击切换选项卡 Fragment:存放不同选项的页面内容 ViewPager:实现页面的左右滑动效果 ---- 3....步骤1:在Gradle中添加依赖 //TabLayout compile 'com.android.support:support-v4:23.4.0' compile 'com.android.support...="#ffff00" //指示器颜色 app:tabIndicatorColor="#66ff33" //指示器高度 app:tabIndicatorHeight
索性自己写了一个简单的View,可以支持普通的广告轮播,目的在轻量级,使用简单。 效果图: ?...简单说下需求: 底部Item指示器 图片文字描述显示 图片轮播 使用简单,使用者不需要考虑除了放图片以外的任何逻辑 重点实现: 首先是改View的xml,CarouselView中封装了ViewPager....view.ViewPager android:id="@+id/view_carousel_viewpager" android:layout_width...= 0){ //如果不是第一个点,则设置点的左边距 layoutParams.leftMargin = 10; }...= 0){ //如果不是第一个点,则设置点的左边距 layoutParams.leftMargin = 10; }
之前有一个项目中有用到轮播,不过不是简单的轮播图片就完了,而是要轮播很多个View,一开始我的想法和大家一样在github在一个算了,哈哈,不过在试用了很多个项目之后都觉得不能完全满足我的需求,大部分还是针对于图片轮播的场景...LoopViewPager LoopViewPager是这个库的关键类,其内部最基本的实现类其实还是android自带的ViewPager,代码如下: public void initViewPage(...); } 在这里我们知道,LoopViewPager里面其实最主要就是包裹着ViewPage而已,至于指示器后面在讲。...,在通过initView()遍历ImageView,再通过addView添加,这就完成了指示器界面初始化。...,然后相减,就是两点之间的间距。
的监听器 ViewPager一般不监听每个页面项的点击事件,而是监听页面滑动的监听事件,对应的监听器类是OnPageChangeListener。...ViewPager的页码指示器 为了方便开发者处理ViewPager的页码显示与切换,Android附带了两个工具,分别是PagerTabStrip和PagerTitleStrip。...,还可自动响应点击事件,点击左侧或右侧的标题,页面会自动切换到左侧或右侧的视图; 4、要设置每页的标题文本,可重写PagerAdapter的getPageTitle,在对应位置返回相应的标题文字;...最后,当用户点击某张图片时,页面自然要跳转到该图片对应的商品页面或者活动页面。所以Banner还需要把一个页面点击的监听器接口开放出来,用于主页面响应这个页面点击事件。...点击下载本文用到的横幅轮播页两种方式的代码 点此查看Android开发笔记的完整目录
本以为单纯的ViewPager就可以实现这些功能。但是蛋疼的事情来了,ViewPager并不支持循环翻页。所以要实现循环还得需要自己去动手。...将触发重新计算指示器指向 setIndicator(0); viewPager.setOffscreenPageLimit(3); viewPager.setOnPageChangeListener...(showPosition); } /** * 设置指示器居中,默认指示器在右方 */ public void setIndicatorCenter...在滚动 isScrolling = true; return; } else if (arg0 == 0) { // viewPager滚动结束...中,为了在进行滚动时阻断父ViewPager滚动,可以 阻止父ViewPager滑动事件 * 父ViewPager需要实现ParentViewPager中的setScrollable方法
控件设计 下面是要实现的控件TabIndicator的组成部分: 底部指示器:也就是蓝色滑动条,记为Indicator。 分割线,宽度固定为1px的线条,可以不显示。记为Divider。...要显示的TabView的个数是根据ViewPager关联的PagerAdapter.getCount()决定的,这里明确 一点:此处的TabIndicator不会像ActionBar自带Tabs视图那样水平滚动...TabClickListener用来监听各个TabView的点击,然后将ViewPager切换到对应位置: private class TabClickListener implements View.OnClickListener...页面切换的事件,mOuterPageListener 用来保存外部代码提供的监听器。...,这个在无动画的ViewPager.setCurrentItem()时会发生。
概念介绍 1.1 TabLayout 定义:实现Material Design效果的控件库(Android Design Support Library); 作用:用于实现点击选项进行切换选项卡的自定义效果...的介绍 1.3 Fragment 定义:Fragment是activity的界面中的一部分或一种行为 1.把Fragment认为模块化的一段activity 2.它具有自己的生命周期,接收它自己的事件...总体设计思路 TabLayout:点击切换选项卡 Fragment:存放不同选项的页面内容 ViewPager:实现页面的左右滑动效果 3....步骤1:在Gradle中添加依赖 //TabLayout compile 'com.android.support:support-v4:23.4.0' compile 'com.android.support...="#ffff00" //指示器颜色 app:tabIndicatorColor="#66ff33" //指示器高度 app:tabIndicatorHeight
领取专属 10元无门槛券
手把手带您无忧上云