开源控件AndroidImageSlider
GitHub地址:https://github.com/daimajia/AndroidImageSlider
AndroidImageSlider是一个非常酷炫的轮播广告控件,主要包括了SliderLayout、SliderView、PageIndicator三个主要部分,其中可以设置PageIndicator的样式(共有6种),还可以设置SliderView的样式(TextSliderView和DefaultSliderView,或者自定义),并且能够设置SliderView的转换效果和转换动画;有两个监听器OnSliderClickListener和OnPageChangeListener。
使用步骤:
①加入依赖
dependencies {
compile "com.android.support:support-v4:+"
compile 'com.squareup.picasso:picasso:2.3.2'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.daimajia.slider:library:1.1.5@aar'
}
②加入权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
③在布局文件中加入SliderLayout
<com.daimajia.slider.library.SliderLayout
android:id="@+id/slider"
android:layout_width="match_parent"
android:layout_height="200dp"/>
④得到SliderLayout的实例
SliderLayout sliderShow = (SliderLayout) findViewById(R.id.slider);
⑤重写onDestroy方法
@Overrideprotected void onStop() {
sliderShow.stopAutoCycle();
super.onStop();
}
关闭sliderLayout,防止内存泄漏。
⑥利用网络将所有的图片都请求到,包装为Banner Bean类,具体会在OKHttp中实现,以后会具体描述
public class Banner extends BaseBean {
private String name;
private String imgUrl;
private String description;
......
}
⑦将所有的SliderView加入SliderLayout中
if(banners != null){
for (Banner ban: banners){
TextSliderView textSliderView = new TextSliderView(this.getActivity());
textSliderView
.description(ban.getName())
.image(ban.getImgUrl());
textSliderView.setOnSliderClickListener(new BaseSliderView.OnSliderClickListener() {
@Override
public void onSliderClick(BaseSliderView slider) {
Toast.makeText(HomeFragment.this.getActivity(),
"slider 1 clicked", Toast.LENGTH_LONG)
.show();
}
});
sliderShow.addSlider(textSliderView);
}
}
⑧为SliderLayout添加监听器
sliderShow.addOnPageChangeListener(new ViewPagerEx.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
// Log.d("Slider", "onPageScrolled");
}
@Override
public void onPageSelected(int position) {
// Log.d("Slider", "onPageSelected");
}
@Override
public void onPageScrollStateChanged(int state) {
// Log.d("Slider", "onPageScrollStateChanged");
}
});
⑨也可以为SliderLayout添加SliderIndicator
<com.daimajia.slider.library.Indicators.PagerIndicator
android:id="@+id/custom_indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"/>
slider.setCustomIndicator((PagerIndicator) findViewById(R.id.custom_indicator));
⑩设置转换效果
setPresetTransformer(Transformer ts)
动画效果
slider.setCustomAnimation(new DescriptionAnimation());
到目前为止,一个高大上的广告轮播组件就做好了!!!