Android---Bannerd的基本使用

来源:互联网 发布:炉石大数据各数据意义 编辑:程序博客网 时间:2024/06/08 08:31

Bannerd的基本使用

Banner是什么?

一个可以替代ViewPa的控件

为什么使用Banner?

因为现在绝大数app都有banner界面,实现循环播放多个广告图片和手动滑动循环等功能。因为ViewPager并不支持循环翻页, 所以要实现循环还得需要自己去添加。
接下时如何使用Banner?
先看看效果图

①导入依赖
compile 'com.youth.banner:banner:1.4.9' 这是Banner的依赖
compile 'com.github.bumptech.glide:glide:3.5.2' 这是Gilde的依赖
compile 'com.squareup.okio:okio:1.5.0'compile 'com.squareup.okhttp3:okhttp:3.2.0'compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'   这3个时okhttp的依赖包compile 'com.google.code.gson:gson:2.8.2'     这是Gson的依赖包
因为在Banner使用中会用到Gilde(图片加载框架)
②导入utils包(封装好的okhttp3的网络请求包,在下面的源代码中有,可以自己下载)
③Mainactivity.java中代码
package com.dabin.www.banner;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.Toast;import com.youth.banner.Banner;import java.io.IOException;import java.util.ArrayList;import java.util.List;import app.GlideImageLoader;import bean.NewBase;import okhttp3.Call;import utils.GsonObjectCallback;import utils.NetWorkUtils;import utils.OkHttp3Utils;public class MainActivity extends AppCompatActivity {    List mlist=new ArrayList();    String mpath = "http://result.eolinker.com/umIPmfS6c83237d9c70c7c9510c9b0f97171a308d13b611?uri=homepage";    private Banner mbanner;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mbanner = (Banner) findViewById(R.id.mybanner);        boolean netWorkAvailable = NetWorkUtils.isNetWorkAvailable(this);        if (!netWorkAvailable) {            Toast.makeText(MainActivity.this, "联网:" + netWorkAvailable, Toast.LENGTH_SHORT).show();        }        getData();    }    //get的请求    private void getData() {        OkHttp3Utils.getInstance().doGet(mpath, new GsonObjectCallback<NewBase>() {            @Override            public void onUi(NewBase newBase) {                for(int i=0; i<newBase.getData().getAd1().size();i++){                    String ad1s = newBase.getData().getAd1().get(i).getImage();                    mlist.add(ad1s);                }                //设置图片加载器                //mbanner.setImageLoader(new GlideImageLoader());                mbanner.setImageLoader(new GlideImageLoader());                mbanner.setImages(mlist);                mbanner.start();            }            @Override            public void onFailed(Call call, IOException e) {            }        });    }}
④ 新建一个MyAppde继承Application
package app;import android.app.Application;public class MyApp extends Application{    public static MyApp mInstance;    @Override    public void onCreate() {        super.onCreate();        mInstance = this;    }    public static MyApp getInstance() {        return mInstance;    }}
⑤新建一个类继承ImageLoader
package app;import android.content.Context;import android.widget.ImageView;import com.bumptech.glide.Glide;import com.youth.banner.loader.ImageLoader;/** * Created by Dabin on 2017/10/13. */public class GlideImageLoader extends ImageLoader {    @Override    public void displayImage(Context context, Object path, ImageView imageView) {        Glide.with(context).load(path).into(imageView);    }}
⑥解析json 使用gsonformat 解析
⑦清单中权限和MyApp的引用
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.dabin.www.banner">    <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"/>    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <uses-permission android:name="android.permission.CAMERA" />    <uses-permission android:name="android.permission.VIBRATE" />    <application        android:name="app.MyApp"        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>
就可以实现效果了
源码地址
https://github.com/Dabinai/Bannera