需要引入的module下载链接:https://pan.baidu.com/s/1sdlQefBTfkLsNO__ouwz8w
添加module方法步骤:
(1)File----->New------>Import Module找到下载的banner文件
(2)app的build.gradle下的dependencies下添加
compile project(':banner')
如:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23+' compile 'com.android.support:recyclerview-v7:23+' compile "com.github.bumptech.glide:glide:3.7.0" compile 'com.facebook.fresco:fresco:0.12.0' compile 'com.zxy.android:recovery:0.0.8' compile project(':banner') // compile 'com.youth.banner:banner:+' }
(3)settings.gradle下添加‘banner’
include ':app',':banner'
1、自定义banner类
public class Banner extends FrameLayout implements OnPageChangeListener {
public String tag = "banner";
private int mIndicatorMargin = BannerConfig.PADDING_SIZE;
private int mIndicatorWidth;
private int mIndicatorHeight;
private int indicatorSize;
private int bannerBackgroundImage;
private int bannerStyle = BannerConfig.CIRCLE_INDICATOR;
private int delayTime = BannerConfig.TIME;
private int scrollTime = BannerConfig.DURATION;
private boolean isAutoPlay = BannerConfig.IS_AUTO_PLAY;
private boolean isScroll = BannerConfig.IS_SCROLL;
private int mIndicatorSelectedResId = R.drawable.gray_radius;//指示点样式
private int mIndicatorUnselectedResId = R.drawable.white_radius;//指示点样式
private int mLayoutResId = R.layout.banner;
private int titleHeight;
private int titleBackground;
private int titleTextColor;
private int titleTextSize;
private int count = 0;
private int currentItem;
private int gravity = -1;
private int lastPosition = 1;
private int scaleType = 1;
private List<String> titles;
private List imageUrls;
private List<View> imageViews;
private List<ImageView> indicatorImages;
private Context context;
private BannerViewPager viewPager;
private TextView bannerTitle, numIndicatorInside, numIndicator;
private LinearLayout indicator, indicatorInside, titleView;
private ImageView bannerDefaultImage;
private ImageLoaderInterface imageLoader;
private BannerPagerAdapter adapter;
private OnPageChangeListener mOnPageChangeListener;
private BannerScroller mScroller;
private OnBannerClickListener bannerListener;
private OnBannerListener listener;
private DisplayMetrics dm;
private WeakHandler handler = new WeakHandler();
public Banner(Context context) {
this(context, null);
}
public Banner(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public Banner(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.context = context;
titles = new ArrayList<>();
imageUrls = new ArrayList<>();
imageViews = new ArrayList<>();
indicatorImages = new ArrayList<>();
dm = context.getResources().getDisplayMetrics();
indicatorSize = dm.widthPixels / 80;//指示点大小
initView(context, attrs);
}
private void initView(Context context, AttributeSet attrs) {
imageViews.clear();
handleTypedArray(context, attrs);
View view = LayoutInflater.from(context).inflate(mLayoutResId, this, true);
bannerDefaultImage = (ImageView) view.findViewById(R.id.bannerDefaultImage);
viewPager = (BannerViewPager) view.findViewById(R.id.bannerViewPager);
titleView = (LinearLayout) view.findViewById(R.id.titleView);
indicator = (LinearLayout) view.findViewById(R.id.circleIndicator);
indicatorInside = (LinearLayout) view.findViewById(R.id.indicatorInside);
bannerTitle = (TextView) view.findViewById(R.id.bannerTitle);
numIndicator = (TextView) view.findViewById(R.id.numIndicator);
numIndicatorInside = (TextView) view.findViewById(R.id.numIndicatorInside);
bannerDefaultImage.setImageResource(bannerBackgroundImage);
initViewPagerScroll();
}
private void handleTypedArray(Context context, AttributeSet attrs) {
if (attrs == null) {
return;
}
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.Banner);
mIndicatorWidth = typedArray.getDimensionPixelSize(R.styleable.Banner_indicator_width, indicatorSize);//指示点宽高
mIndicatorHeight = typedArray.getDimensionPixelSize(R.styleable.Banner_indicator_height, indicatorSize);
mIndicatorMargin = typedArray.getDimensionPixelSize(R.styleable.Banner_indicator_margin, BannerConfig.PADDING_SIZE);
mIndicatorSelectedResId = typedArray.getResourceId(R.styleable.Banner_indicator_drawable_selected, R.drawable.gray_radius);
mIndicatorUnselectedResId = typedArray.getResourceId(R.styleable.Banner_indicator_drawable_unselected, R.drawable.white_radius);
scaleType = typedArray.getInt(R.styleable.Banner_image_scale_type, scaleType);
delayTime = typedArray.getInt(R.styleable.Banner_delay_time, BannerConfig.TIME);
scrollTime = typedArray.getInt(R.styleable.Banner_scroll_time, BannerConfig.DURATION);
isAutoPlay = typedArray.getBoolean(R.styleable.Banner_is_auto_play, BannerConfig.IS_AUTO_PLAY);
titleBackground = typedArray.getColor(R.styleable.Banner_title_background, BannerConfig.TITLE_BACKGROUND);
titleHeight = typedArray.getDimensionPixelSize(R.styleable.Banner_title_height, BannerConfig.TITLE_HEIGHT);
titleTextColor = typedArray.getColor(R.styleable.Banner_title_textcolor, BannerConfig.TITLE_TEXT_COLOR);
titleTextSize = typedArray.getDimensionPixelSize(R.styleable.Banner_title_textsize, BannerConfig.TITLE_TEXT_SIZE);
mLayoutResId = typedArray.getResourceId(R.styleable.Banner_banner_layout, mLayoutResId);
bannerBackgroundImage = typedArray.getResourceId(R.styleable.Banner_banner_default_image, R.drawable.no_banner);
typedArray.recycle();
}
private void initViewPagerScroll() {
try {
Field mField = ViewPager.class.getDeclaredField("mScroller");
mField.setAccessible(true);
mScroller = new BannerScroller(viewPager.getContext());
mScroller.setDuration(scrollTime);
mField.set(viewPager, mScroller);
} catch (Exception e) {
Log.e(tag, e.getMessage());
}
}
.
.
.
.
2、activity调用banner Module
(1)实现接口
public class MainActivity extends AppCompatActivity implements OnBannerListener {
(2)实现数据添加
banner.setIndicatorGravity(BannerConfig.LEFT);//指示器位置左中右
banner.updateBannerStyle(BannerConfig.NUM_INDICATOR);//标题显示与否,指示器显示与否
//简单使用
banner.setImages(App.images)//图片
.setBannerTitles(App.titles)//标题
.setImageLoader(new GlideImageLoader())
.setOnBannerListener(this)
.start();
(3)接口方法
@Override
public void OnBannerClick(int position) {//item图片点击
Toast.makeText(getApplicationContext(),"你点击了:"+position,Toast.LENGTH_SHORT).show();
}