引用 库地址:https://github.com/saiwu-bigkoo/Android-ConvenientBanner
demo是用Module方式依赖,
studio 用的话直接添加个依赖就可以用了
gradle
依赖:
compile 'com.bigkoo:convenientbanner:2.0.5'
布局xml
:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.bigkoo.convenientbanner.ConvenientBanner
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/convenientBanner"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:canLoop="true"
/>
</RelativeLayout>
Java
代码:加载资源文件里面的图片
package test.example.xuexue.convenientbanner;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import com.bigkoo.convenientbanner.ConvenientBanner;
import com.bigkoo.convenientbanner.holder.CBViewHolderCreator;
import com.bigkoo.convenientbanner.holder.Holder;
import java.util.ArrayList;
import java.util.List;
import javax.xml.transform.Transformer;
public class MainActivity extends AppCompatActivity {
private ConvenientBanner convenientBanner;
private List<Integer> imgs=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgs.add(R.drawable.b1);
imgs.add(R.drawable.b2);
imgs.add(R.drawable.b3);
imgs.add(R.drawable.guide1);
//找控件
convenientBanner = (ConvenientBanner) findViewById(R.id.convenientBanner);
convenientBanner.setPages(new CBViewHolderCreator() {
@Override
public Object createHolder() {
return new LocalImageHolderView();
}
},imgs) //设置需要切换的View
.setPointViewVisible(true) //设置指示器是否可见
//设置两个点图片作为翻页指示器,不设置则没有指示器,可以根据自己需求自行配合自己的指示器,不需要圆点指示器可用不设
.setPageIndicator(new int[]{R.mipmap.ic_launcher,R.mipmap.ic_launcher})
//设置指示器位置(左、中、右)
.setPageIndicatorAlign(ConvenientBanner.PageIndicatorAlign.ALIGN_PARENT_RIGHT)
.startTurning(2000) //设置自动切换(同时设置了切换时间间隔)
.setManualPageable(true) //设置手动影响(设置了该项无法手动切换)
//设置翻页的效果,不需要翻页效果可用不设
// .setPageTransformer(Transformer.DefaultTransformer)
;
// convenientBanner.setManualPageable(false);//设置不能手动影响
}
public class LocalImageHolderView implements Holder<Integer>{
private ImageView imageView;
@Override
public View createView(Context context) {
imageView = new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
return imageView;
}
@Override
public void UpdateUI(Context context, int position, Integer data) {
imageView.setImageResource(data);
}
}
}
感觉比viewpager简单,易操作,这个可以自动实现自动轮播,小圆点
加载网络图片的JAVA代码:
convenientBanner.setPages(new CBViewHolderCreator() {
@Override
public Object createHolder() {
return new LocalImageHolderView();
}
}, mList) //mList是图片地址的集合
.setPointViewVisible(true) //设置指示器是否可见
//设置两个点图片作为翻页指示器,不设置则没有指示器,可以根据自己需求自行配合自己的指示器,不需要圆点指示器可用不设
.setPageIndicator(new int[]{R.drawable.normal, R.drawable.unnormal})
//设置指示器位置(左、中、右)
.setPageIndicatorAlign(ConvenientBanner.PageIndicatorAlign.CENTER_HORIZONTAL)
.startTurning(2000) //设置自动切换(同时设置了切换时间间隔)
.setManualPageable(true) //设置手动影响(设置了该项无法手动切换)
;
}
class LocalImageHolderView implements Holder<String> {
private ImageView imageView;
@Override
public View createView(Context context) {
imageView = new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
return imageView;
}
@Override
public void UpdateUI(Context context, int position, String data) {
//glide加载出图片,data是传过来的图片地址,
Glide.with(mActivity).load(data).into(imageView);
}
}