如何搭建一个WEB服务器项目(四)—— 实现安卓端图片加载
使用Glide安卓图片加载库
观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解,并不一定正确,希望不要误人子弟。欢迎各位大佬来评论区提出问题或者是指出错误,分享宝贵经验。先谢谢了( ̄▽ ̄)"!
今天来介绍一下怎么利用Glide库加载服务器上边的图片文件,并且配合Banner库使用实现轮播图效果:
首先在我们的服务器项目里边先存好我们所需要的图片,如下:

然后在springmvc.xml这个配置文件里新增如下配置(看过本系列第一篇的朋友应该知道在何处更改):

这样子我们才能正常的访问到这些图片(方便起见我把用到的三个图片也贴出来):
hot1.jpg:

hot2.jpg:

hot3.jpg:

接下来就是安卓端的事情了,大家可以从下面链接里先简单了解下Glide和Banner这两个库:
Glide3.7.0:
https://github.com/bumptech/glide
Banner1.4.10:
https://github.com/youth5201314/banner/tree/release-1.4.10
首先向项目里添加如下两个依赖:
- implementation 'com.github.bumptech.glide:glide:3.7.0'
- implementation 'com.youth.banner:banner:1.4.10'
然后就是代码的具体实现了:
先创建一个简单的XML布局,里面只包含com.youth.banner.Banner这一个控件,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"> <com.youth.banner.Banner
android:id="@+id/banner1"
android:layout_width="match_parent"
android:layout_height="130dp"
app:indicator_height="5dp"
app:indicator_width="5dp"
app:is_auto_play="true" /> </LinearLayout>
设置glide的占位图的做法如下:
RequestOptions options = new RequestOptions()
.placeholder(R.drawable.img_default)//图片加载出来前,显示的图片
.fallback( R.drawable.img_blank) //url为空的时候,显示的图片
.error(drawable.img_load_failure);//图片加载失败后,显示的图片 Glide.with(this)
.load(URL) //图片地址
.apply(options)
.into(ImagView);
这里只展示设置加载失败时的占位图,代码如下:
package com.example.dolphin; import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager; import android.content.Context;
import android.os.Bundle;
import android.widget.ImageView; import com.bumptech.glide.Glide;
import com.example.dolphin.home.HomeFragmentAdapter;
import com.example.dolphin.utils.Constants;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.Transformer;
import com.youth.banner.loader.ImageLoader; import java.util.ArrayList;
import java.util.List; import butterknife.BindView; public class BannerActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_banner);
Banner banner = (Banner)findViewById(R.id.banner1);
List<String> urls = new ArrayList<>();
urls.add(Constants.HOT_URL + "hot1.jpg");
urls.add(Constants.HOT_URL + "hot2.jpg");
urls.add(Constants.HOT_URL + "hot3.jpg");
//设置内置样式,共有六种可以点入方法内逐一体验使用。
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR);
//设置图片加载器,图片加载器在下方
banner.setImageLoader(new MyLoader());
//设置图片网址或地址的集合
banner.setImages(urls);
//设置轮播的动画效果,内含多种特效,可点入方法内查找后内逐一体验
banner.setBannerAnimation(Transformer.Default);
//设置轮播间隔时间
banner.setDelayTime(2000);
//设置是否为自动轮播,默认是“是”。
banner.isAutoPlay(true);
//设置指示器的位置,小点点,左中右。
banner.setIndicatorGravity(BannerConfig.CENTER)
//必须最后调用的方法,启动轮播图。
.start();
}
//使用glide作为图片加载器
private class MyLoader extends ImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
//对于很多 Android API 调用,Context 是必须的
Glide.with(context)
//一个字符串的形式表示一个网络图片的 URL
.load((String) path)
//加载失败时的占位图
.error(R.mipmap.ic_launcher)
//图片会显示到对应的 ImageView中
.into(imageView);
}
}
}
加载成功(左)和失败(右)效果:


—————————————我———是———分———割———线————————————
劳动节更新!
要不要考虑支持一波勤(tou)恳(lan)码字的博主呢((*≧︶≦))( ̄▽ ̄* )ゞ)?
方案设计答辩还算顺利,结果也比较让我满意(对得起我辛苦写了好久的设计说明书
如何搭建一个WEB服务器项目(四)—— 实现安卓端图片加载的更多相关文章
- 如何搭建一个WEB服务器项目(二)—— 对数据库表进行基本的增删改查操作
使用HibernateTemplate进行增删改查操作 观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解,并不一定正确,希望不要误人子弟.欢迎各位大佬来评论区提出问题或者是指出 ...
- 如何搭建一个WEB服务器项目(六)—— 上传图片至服务器
上传图片(用户头像)至服务器 观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解,并不一定正确,希望不要误人子弟.欢迎各位大佬来评论区提出问题或者是指出错误,分享宝贵经验.先谢谢 ...
- 如何搭建一个WEB服务器项目(三)—— 实现安卓端联网登录
安卓端调用服务器登录函数进行验证登录 观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解,并不一定正确,希望不要误人子弟.欢迎各位大佬来评论区提出问题或者是指出错误,分享宝贵经验 ...
- 如何搭建一个WEB服务器项目(一)—— 开篇 ,搭建SSH整合框架
使用Intellij IDEA2019创建SSH(Spring+SpringMVC+Hibernate+Maven整合)项目 观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解, ...
- 如何搭建一个WEB服务器项目(五)—— Controller返回JSON字符串
从服务器获取所需数据(JSON格式) 观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解,并不一定正确,希望不要误人子弟.欢迎各位大佬来评论区提出问题或者是指出错误,分享宝贵经验 ...
- 搭建一个Web API项目(DDD)
传送阵:写在最后 一.创建一个能跑的起来的Web API项目 1.建一个空的 ASP.NET Web应用 (为什么不直接添加一个Web API项目呢,那样会有些多余的内容(如js.css.Areas等 ...
- 用C写一个web服务器(四) CGI协议
* { margin: 0; padding: 0 } body { font: 13.34px helvetica, arial, freesans, clean, sans-serif; colo ...
- 【原创】从零开始搭建Electron+Vue+Webpack项目框架(五)预加载和Electron自动更新
导航: (一)Electron跑起来(二)从零搭建Vue全家桶+webpack项目框架(三)Electron+Vue+Webpack,联合调试整个项目(四)Electron配置润色(五)预加载及自动更 ...
- [iOS微博项目 - 1.8] - 各种尺寸图片加载 & 控件不显示研究
A. 图片的加载: [UIImage imageNamed:@"home"]; 加载png图片 一.非retina屏幕 1.3.5 inch(320 x 480) * ...
随机推荐
- 数据结构(C语言版)---排序
1.排序:重排表中元素. 2.根据数据元素是否完全在内存中,将排序算法分为内部排序和外部排序两类. 3.插入排序:将一个待排序记录按关键字大小插入到前面已排好的子序列中,直到全部记录插入完成. 1)直 ...
- ES6系列-什么是ES6?新手应该怎么理解
ECMAScript 是什么 很多初学者都很困惑,ECMAScript是什么?它跟JavaScript有什么关系? 大家注意到了吗?从题目中我们就可以看出来了,ECMAScript是JavaScrip ...
- PHP $_FILES的应用
关于文件上传这块,如果处理不好的话,很容易成为黑客入侵的开口,例如黑客在你这个上传接口里放一段木马的文件,那只能祝你好运了. 所以,我们上传文件的时候都会先判断, 但是一般的操作是先上传,再判断,如果 ...
- Golang快速入门:从菜鸟变大佬
最近写了不少Go代码,但是写着写着,还是容易忘,尤其是再写点Python代码后.所以找了一篇不错的Golang基础教程,翻译一下,时常看看. 原文链接: 「Learning Go - from zer ...
- Fabric的6大特性
文章目录 什么是Hyperledger Fabric 1. 成员准入 2. 性能,可伸缩性和信任级别 3 需要了解的数据 4 通过不可变的分布式账本进行复杂查询 5 支持插件组件的模块化架构 6 保护 ...
- 【linux三剑客】grep命令
grep, egrep, fgrep - print lines matching a pattern grep 命令用于查找文件里符合条件的字符串. grep 指令用于查找内容包含指定的范本样式的文 ...
- MyBaties一级缓存
2019独角兽企业重金招聘Python工程师标准>>> 一.一级缓存简介 在系统代码的运行中,我们可能会在一个数据库会话中,执行多次查询条件完全相同的Sql,鉴于日常应用的大部分场景 ...
- Android 项目 Android 学习手册(一)
前言: 当每次查询android 知识的时候,内心是凌乱的,总觉得要是有一个工具多好, 尤其在手机端如何可以查询的话,会非常完美,能大大减少选择查询的时间, 之前见了很多java 学习手册,把一些重要 ...
- 基于ONOS的T-SDN Super控制器,突破多域网络运营的难关
在法国尼斯举办的IIR WDM波分论坛(Next Generation Optical Networking)上,华为展示了T-SDN(Transport SDN,传送SDN)领域的众多新技术,其中T ...
- axis2 411
返回411加个这个就行了 _operationClient.getOptions().setProperty(HTTPConstants.CHUNKED, false); 本文转自 cd1989929 ...