最先导依赖
activity_main.xml中设置控件
设置全局变量
MainActivity 初始化图片并找到Banner控件
网络获取数据并只保存图片
setbanner(data);方法
MyNetTasty类——————(网络请求工具包)
ImageLoaderutils类————(图片加载工具类)
compile
'com.youth.banner:banner:1.4.10'
activity_main.xml中设置控件
<
com.
youth.
banner.
Banner
android:
id
=
"@+id/banner"
android:
layout_width
=
"match_parent"
android:
layout_height
=
"200dp"/
>
设置全局变量
private
List
<
String
>
data
=
new
ArrayList
<>();
private
Banner
banner;
ImageLoaderutils.
initImageLoader(
MainActivity.
this);
banner
=
findViewById(
R.
id.
banner);
// banner
MyNetTask
task
=
new
MyNetTask(
new
MyNetTask.
IcallBack() {
@
Override
public
void
getJsonData(
String
jsonStr) {
Gson
gson
=
new
Gson();
ShuJu
shuJu
=
gson.
fromJson(
jsonStr,
ShuJu.
class);
List
<
ShuJu.
DataScrollBean
>
dataScroll
=
shuJu.
getDataScroll();
for (
int
i
=
0;
i
<
dataScroll.
size();
i
++){
}
setbanner(
data);
}
});
setbanner(data);方法
public
void
setbanner
(
List
<
String
>
data
)
{
this
.
data
=
data
;
banner
.
setImageLoader
(
new
MyBannerLoader
(
))
;
banner
.
setImages
(
data
)
;
banner
.
start
(
)
;
}
public
class
MyNetTask
extends
AsyncTask
<
String,
Void,
String
> {
//2.申明接口对象
private
IcallBack
icallBack;
//3.创建构造方法,将接口传进来
public
MyNetTask(
IcallBack
icallBack) {
this.
icallBack
=
icallBack;
}
@
Override
protected
String
doInBackground(
String...
strings) {
StringBuilder
builder
=
new
StringBuilder();
//1.根据url创建URL
try {
URL
url
=
new
URL(
strings[
0]);
//2.打开连接
HttpURLConnection
conn
=(
HttpURLConnection)
url.
openConnection();
//3.设置
conn.
setRequestMethod(
"GET");
conn.
setConnectTimeout(
5000);
conn.
setReadTimeout(
5000);
//4.判断结果码
int
responseCode
=
conn.
getResponseCode();
if(
conn.
getResponseCode()
==
200){
//5.获取数据
InputStream
inputStream
=
conn.
getInputStream();
BufferedReader
reader
=
new
BufferedReader(
new
InputStreamReader(
inputStream));
String
str;
while ((
str
=
reader.
readLine())
!=
null){
builder.
append(
str);
}
}
}
catch (
MalformedURLException
e) {
e.
printStackTrace();
}
catch (
IOException
e) {
e.
printStackTrace();
}
return
builder.
toString();
}
@
Override
protected
void
onPostExecute(
String
s) {
super.
onPostExecute(
s);
//4.调用接口中方法
icallBack.
getJsonData(
s);
}
//1.定义一个接口
public
interface
IcallBack{
void
getJsonData(
String
jsonStr);
}
ImageLoaderutils类————(图片加载工具类)
public
class
ImageLoaderutils {
//初使化
public
static
void
initImageLoader(
Context
context){
//自定义磁盘缓存路径 系统默认的缓存路径 sd...<package>..cache 当app被卸载时,此路径下的缓存图片一并被删除
//File cacheDir=getExternalCacheDir();
File
cacheDir
=
new
File(
Environment.
getExternalStorageDirectory().
getPath()
+
"/aaa");
//自定义 sd卡的缓存路径
//第一步:对ImageLoader进行初使化
ImageLoaderConfiguration
configuration
=
new
ImageLoaderConfiguration.
Builder(
context)
.
memoryCacheExtraOptions(
320,
450)
// default = device screen dimensions 内存缓存文件的最大长宽
.
diskCacheExtraOptions(
480,
800,
null)
// 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个
.
threadPriority(
Thread.
NORM_PRIORITY
-
2)
// default 设置当前线程的优先级
.
tasksProcessingOrder(
QueueProcessingType.
FIFO)
// default
.
denyCacheImageMultipleSizesInMemory()
.
memoryCache(
new
LruMemoryCache(
10
*
1024
*
1024))
//可以通过自己的内存缓存实现
.
memoryCacheSize(
2
*
1024
*
1024)
// 内存缓存的最大值
.
memoryCacheSizePercentage(
13)
// default
.
diskCache(
new
UnlimitedDiscCache(
cacheDir))
// 磁盘缓存 --default 可以自定义缓存路径
.
diskCacheSize(
20
*
1024
*
1024)
// 50 Mb sd卡(本地)缓存的最大值
.
diskCacheFileCount(
100)
// 可以缓存的文件数量
// default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密
.
diskCacheFileNameGenerator(
new
HashCodeFileNameGenerator())
.
imageDownloader(
new
BaseImageDownloader(
context))
// default
.
defaultDisplayImageOptions(
DisplayImageOptions.
createSimple())
// default
.
writeDebugLogs()
// 打印debug log
.
build();
ImageLoader.
getInstance().
init(
configuration);
}
/**
* 得到图片的显示设置类对象
*
@param
context
*
@return
*/
public
static
DisplayImageOptions
getImageOption(
Context
context){
DisplayImageOptions
options
=
new
DisplayImageOptions.
Builder()
.
cacheInMemory(
true)
//使用内存缓存
.
cacheOnDisk(
true)
//使用磁盘缓存
.
showImageOnLoading(
R.
mipmap.
ic_launcher)
//设置正在下载的图片
.
showImageForEmptyUri(
R.
mipmap.
ic_launcher)
//url为空或请求的资源不存在时
.
showImageOnFail(
R.
mipmap.
ic_launcher)
//下载失败时显示的图片
.
bitmapConfig(
Bitmap.
Config.
RGB_565)
//设置图片色彩模式
.
imageScaleType(
ImageScaleType.
EXACTLY)
//设置图片的缩放模式===imageView,,ScaleType
.
displayer(
new
RoundedBitmapDisplayer(
50))
//设置图片圆角显示 弧度
.
build();
return
options;
}
}