banner无限轮播

来源:互联网 发布:办公软件2003 mac版 编辑:程序博客网 时间:2024/05/16 08:52

如果看不懂,可以去https://github.com/youth5201314/banner看看原文


https://github.com/youth5201314/banner


1:导入依赖和权限:

<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

compile 'com.youth.banner:banner:1.4.9'
compile 'com.google.code.gson:gson:2.8.1'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'org.xutils:xutils:3.5.0'
compile 'com.squareup.okhttp3:okhttp:3.9.0'


2:
public class GlideImageLoader extends ImageLoader {    @Override    public void displayImage(Context context, Object path, ImageView imageView) {        App app = (App) context.getApplicationContext();        app.getImageLoader().displayImage(path.toString(),imageView);    }}
3:
public class App extends Application {    private ImageLoader  mImageLoader;    @Override    public void onCreate() {        super.onCreate();        x.Ext.init(this);        x.Ext.setDebug(BuildConfig.DEBUG);        DisplayImageOptions options=new DisplayImageOptions.Builder()                .cacheOnDisk(true)                .cacheInMemory(true)                .showImageOnLoading(R.mipmap.ic_launcher)                .build();        ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this)                .defaultDisplayImageOptions(options)                .build();        mImageLoader = ImageLoader.getInstance();        mImageLoader.init(configuration);    }    public ImageLoader getImageLoader() {        return mImageLoader;    }}
4:
@ViewInject(R.id.banner)Banner banner;
//设置banner样式banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);//设置图片加载器banner.setImageLoader(new GlideImageLoader());//设置图片集合//设置banner动画效果banner.setBannerAnimation(Transformer.DepthPage);//设置标题集合(当banner样式有显示title时)//设置自动轮播,默认为truebanner.isAutoPlay(true);//设置轮播时间banner.setDelayTime(1500);//设置指示器位置(当banner模式中有指示器时)banner.setIndicatorGravity(BannerConfig.CENTER);//banner设置方法全部调用完毕时最后调用

5:请求数据:记得创建解析Bean类!

 String url="http://www.babybuy100.com/API/getShopOverview.ashx";    
@ContentView(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {
    @ViewInject(R.id.banner)
    Banner banner;
    List<String> arr=new ArrayList<>();
    List<String> list=new ArrayList<>();
    Gson gson=new Gson();
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            Bean bean= (Bean) msg.obj;
            List<Bean.ResultBean.AdvsBean> advs = bean.getResult().getAdvs();
            for (int a=0;a<advs.size();a++){
            arr.add(advs.get(a).getPic());
                list.add(advs.get(a).getDescriptions());
            }
            banner.setImages(arr);
            banner.setBannerTitles(list);
            banner.start();
        }
    };


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        x.view().inject(this);




        //设置banner样式
        banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
//设置图片加载器
        banner.setImageLoader(new GlideImageLoader());
//设置图片集合


//设置banner动画效果
        banner.setBannerAnimation(Transformer.DepthPage);
//设置标题集合(当banner样式有显示title时)


//设置自动轮播,默认为true
        banner.isAutoPlay(true);
//设置轮播时间
        banner.setDelayTime(1500);
//设置指示器位置(当banner模式中有指示器时)
        banner.setIndicatorGravity(BannerConfig.CENTER);
//banner设置方法全部调用完毕时最后调用


        String url="http://www.babybuy100.com/API/getShopOverview.ashx";
        OkHttpClient okHttpClient=new OkHttpClient.Builder().addInterceptor(new HttpInterceptor()).build();
        Request request=new Request.Builder()
                .url(url)
                .build();
        okHttpClient.newCall(request).enqueue(new okhttp3.Callback() {
            @Override
            public void onFailure(Call call, IOException e) {


            }


            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();


                Bean bean = gson.fromJson(string, Bean.class);
                  Message msg=handler.obtainMessage();
                msg.obj=bean;
                handler.sendMessage(msg);
            }
        });
}


6:布局

<com.youth.banner.Banner    xmlns:app="http://schemas.android.com/apk/res-auto"    android:id="@+id/banner"    android:layout_width="match_parent"    android:layout_height="150dp"/>