Skip to content

holmofy/AndroidCarousel

Repository files navigation

Carousel

这是一个安卓客户端实用的轮播图控件,废话不多说,先上Demo效果图

效果图

使用时在布局文件中设计好你想要的轮播图效果,如下

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="160dp">

        <cn.hufeifei.carousel.Carousel
            android:id="@+id/carousel"
            android:layout_width="match_parent"
            android:layout_height="160dp" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="#9000">

            <cn.hufeifei.carousel.indicator.TitleIndicator
                android:id="@+id/pagerTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginLeft="10dp"
                android:padding="10dp"
                android:textColor="#fff"
                tools:ignore="RtlHardcoded" />

            <cn.hufeifei.carousel.indicator.ShapeIndicator
                android:id="@+id/shapeIndicator"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_marginRight="10dp"
                app:item_gap="10dp"
                app:item_height="10dp"
                app:item_width="10dp"
                tools:ignore="RtlHardcoded" />
        </RelativeLayout>
    </RelativeLayout>

其中有Carousel、TitleIndicator、ShapeIndicator、DigitalIndicator四个自定义类 1、Carousel是无限循环播放图片的,它继承自ViewPager,完全可以把它当成ViewPager使用(比如设置PagerAdapter,添加页面滑动监听),它的自定义属性如下:

属性含义类型默认值
scroll_delay滑动间隔时间integer3000ms
scroll_duration滑动时长integer600ms
scroll_direction滑动方向enum(left|right)left
auto_scroll是否自动滑动booleantrue

2、ShapeIndicator是形状指示器,默认指示器形状为圆形(如Demo中的第一个轮播图) 你还可以selected_drawable与unselected_drawable两个属性来自定义它的形状以及颜色(如Demo中的第三个轮播图),它的自定义属性如下表:

属性含义类型默认值
item_width每个指示器的宽度dimension0(所以必须设置该属性)
item_height每个指示器的高度dimension0(所以必须设置该属性)
item_gap指示器之间的间隔
(如果为垂直方向则为垂直间隔)
dimension默认与item_width相等
item_clickable指示器是否能相应点击事件booleantrue(所以默认点击指示器也能切换页面)
selected_drawable指示器被选中时的drawabledrawable默认为圆形浅红色(详见Demo演示图)
unselected_drawable指示器未被选中时的drawabledrawable默认为圆形暗灰色

3、TitleIndicator是用来显示页面标题的,它通过调用PagerAdapter的getPageTitle方法来获取标题内容的,所以如果你想设置表示那你需要重载getPageTitle方法。另外由于TitleIndicator继承自TextView,所以使用方式与TextView完全相同,你可以为它设置背景,颜色等各种样式(它没有自定义属性)。

4、DigitalIndicator是以数字的方式显示当前页面所在的位置的,它也是直接继承自TextView,与ViewPager关联后会自动根据ViewPager所在的位置修改文本内容(Demo中第二个轮播图就是用了该指示器)

在以上的Indicator指示器中都有一个void attachViewPager(@Nullable ViewPager viewPager) 方法可以将指示器与ViewPager关联,由于Carousel直接继承自ViewPager,所以你也可以使用该方法关联Carousel,如果传入参数为null,解除该指示器与原来的ViewPager的关联 具体关联ViewPager的Java代码如下 :

carousel.setAdapter(new PagerAdapter());
pagerTitle.attachViewPager(carousel);
shapeIndicator.attachViewPager(carousel);//调用该方法关联ViewPager对象

设置ViewPager切换动画

如果你想设置更炫的动画切换效果你可以参考** ViewPagerTransforms项目 **,使用方式非常简单:

//先添加该库的Gradle依赖
compile 'com.ToxicBakery.viewpager.transforms:view-pager-transforms:1.2.32@aar'

//通过setPageTransformer方法即可设置切换动画
pager = (ViewPager) findViewById(R.id.container);
pager.setAdapter(mAdapter);
pager.setPageTransformer(true, new RotateUpTransformer());

About

轮播图控件

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages