Bannerd的基本使用
Banner是什么?
一个可以替代ViewPa的控件
为什么使用Banner?
因为现在绝大数app都有banner界面,实现循环播放多个广告图片和手动滑动循环等功能。因为ViewPager并不支持循环翻页, 所以要实现循环还得需要自己去添加。
接下时如何使用Banner?
接下时如何使用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>
就可以实现效果了
源码地址