LMBanners
介绍:
简易的Banners,引导组件。
运行效果:
使用说明:
原理说明
项目基于ViewPager实现,ViewPager使用方式不用多说。
需求1:如何循环播放?
实现方式采用假设当前Pager总页数为X,假设页数为Y页, 首次进入处于0页,向右滑动自然没问题,向左滑时候0------1,显然不成立,此时可在finshUpdate函数中手动将第0页的下标变为X,如此我们的 ViewPager即可向左滑动.但是当向右的时候呢?原理一样,当下标为X的时候,将其替换为0即可。
需求2:如何自动播放?
其实这对于稍微有点经验的人来说不算难点了,方式很多。本项目采用handler的方式,每次切换进行一次发送即可,在页面切换时记得Stop,回来 继续Start,页面销毁时进行Remove即可。
需求3:手指按住或者拖动时如何停止滑动。
本项目采用在ViewPager的dispatch进行事件分发的拦截处理。 当然也可以手动去处理Image的Ontouch事件。
Gradle引与使用
Gradle:
dependencies {
compile 'com.allure0:LMBanners:1.0.2'
}
使用方法
Config in xml:
<com.allure.lbanners.LMBanners
android:id="@+id/banners"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:canLoop="true"
app:isVertical="false"
app:auto_play="true"
app:durtion="5000"
app:scroll_duration="66666"
app:indicator_select="@drawable/page_indicator_select"
app:indicator_unselect="@drawable/page_indicator_unselect"
app:horizontal_transitionEffect="accordion"
app:indicator_position="bottom_mid"
>
</com.allure.lbanners.LMBanners>
Config in Java:
mLBanners = (LMBanners) findViewById(R.id.banners);
//设置Banners高度
mLBanners.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, ScreenUtils.dip2px(this, 200)));
//本地用法
// mLBanners.setAdapter(new LocalImgAdapter(MainActivity.this),localImages);
//网络图片
mLBanners.setAdapter(new UrlImgAdapter(MainActivity.this), networkImages);
//参数设置
mLBanners.setAutoPlay(true);//自动播放
mLBanners.setVertical(false);//是否可以垂直
mLBanners.setScrollDurtion(222);//两页切换时间
mLBanners.setCanLoop(true);//循环播放
mLBanners.setSelectIndicatorRes(R.drawable.page_indicator_select);//选中的原点
mLBanners.setUnSelectUnIndicatorRes(R.drawable.page_indicator_unselect);//未选中的原点
// mLBanners.setHoriZontalTransitionEffect(TransitionEffect.Default);//选中喜欢的样式
mLBanners.setHoriZontalCustomTransformer(new ParallaxTransformer(R.id.id_image));//自定义样式
mLBanners.setDurtion(2000);//切换时间
mLBanners.hideIndicatorLayout();//隐藏原点
mLBanners.showIndicatorLayout();//显示原点
mLBanners.setIndicatorPosition(LMBanners.IndicaTorPosition.BOTTOM_MID);//设置原点显示位置
//停止事件,节省资源
@Override
protected void onPause() {
super.onPause();
mLBanners.stopImageTimerTask();
}
@Override
protected void onResume() {
super.onResume();
mLBanners.startImageTimerTask();
}
@Override
protected void onDestroy() {
super.onDestroy();
mLBanners.clearImageTimerTask();
}
/-------------Adapter-----------/
@Override
public View getView(final LMBanners lBanners, final Context context, int position, String data) {
View view = LayoutInflater.from(mContext).inflate(R.layout.item, null);
ImageView imageView = (ImageView) view.findViewById(R.id.id_image);
//可行选择喜欢的图片加载库。
ImageLoader.getInstance().displayImage(data,imageView);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
return view;
}
注意事项
纵向播放时暂只支持一种效果(后续可能增加) 使用纵向播放后代码不要设置setHoriZontalTransitionEffect()、setHoriZontalCustomTransformer() XML内不要调用自定义属性horizontal_transitionEffect
已下载
0