首先布局页面,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <Button
android:id="@+id/load"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="点我获取图片"/> <!--style="@android:style/Widget.Holo.ProgressBar.Horizontal"-->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="进度条..."/>
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

其次就是最主要的Java代码:

public class SeconedActivity extends AppCompatActivity  implements View.OnClickListener{
private ProgressBar pb;
private ImageView image;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
pb= (ProgressBar) findViewById(R.id.progress);
image= (ImageView) findViewById(R.id.image);
} @Override
public void onClick(View v) {
//调用的方法
//例:http://192.168.26.21:8080/tomcat.png,访问的是tomcat下的Root文件夹下的tomcat.png
new Myasync().execute("地址");
} /*****************************************************************************************************************************************/
// 第一步创建一个任务实例/ /**
* 注意三个参数分别对应的
*/
class Myasync extends AsyncTask<String,Integer,Bitmap>{ /**************************************************************************************************/
// 重写super.onPreExecute();方法,执行前的初始化操作,可以在这个方法中初始化控件
@Override
protected void onPreExecute() {
super.onPreExecute();
// 进度条设置为0
pb.setProgress(0);
// 设置ImageView的初始图片
image.setImageResource(R.mipmap.ic_launcher);
} /**
* 后台进行耗时操作
* @param params 参数可以是很多,或者没有
* @return
*/
@Override
protected Bitmap doInBackground(String... params) {
HttpURLConnection conn =null;
try {
URL url=new URL(params[0]);//先创建访问地址
// 创建链接
conn=(HttpURLConnection)url.openConnection();
// 得到连接之后,设置请求方式,要注意,括号里的参数要全部大写
conn.setRequestMethod("GET");
// 获取响应的结果吗,比如200(正常),404(错误),500
int code= conn.getResponseCode();
if(code==200){//code等于200表示数据访问正常
// 获取内容返回输入流
InputStream is= conn.getInputStream();
// 进行读取字节的临时存储
ByteArrayOutputStream bos=new ByteArrayOutputStream();
byte[] b=new byte[1024];
// 定义len,读取的长度
int len;
// 获取内容的总长度
int tatalLength= conn.getContentLength();
while ((len=is.read(b))!=-1){ //不等于-1表示还没有读完
// 写入到bos中
bos.write(b,0,len);
// 循环一次,更新一次,读到的占中的百分之多少
publishProgress(bos.size()*100/tatalLength);
// 因为执行速度太快,所以让其强制休眠1s
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 将返回内容创建成字符串
b=bos.toByteArray();
// 参数1:图片的字节数组,参数2:从第几字节开始,参数3:共读取多长
return BitmapFactory.decodeByteArray(b,0,b.length);
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
// 把conn关闭
if(conn!=null){
conn.disconnect();
}
}
return null;
} /**
* 执行结果后的UI操作
* @param bitmap
*/
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
if (bitmap!=null){
// 读取成功后,进度条设置为100%
pb.setProgress(100);
image.setImageBitmap(bitmap);
}else{
// 读取失败后,提示信息
pb.setProgress(0);//进度条设置为0
// 提示信息
Toast.makeText(SeconedActivity.this, "图片读取失败", Toast.LENGTH_SHORT).show();
}
} /**
* 执行中更新UI操作
* @param values
*/
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
pb.setProgress(values[0]);//每次循环后的百分数
}
}
}

需要注意的是,你要想获取的图片要在Tomact目录下的webapps下的ROOT文件夹,如果是别的文件夹的或需要在路径是注明,同时还要拿到自己的ip地址,和启动Tomcat

实现加载Tomcat服务器中的图片,并且有进度条提示进度的更多相关文章

  1. Tomcat启动时加载数据到缓存---web.xml中listener加载顺序(例如顺序:1、初始化spring容器,2、初始化线程池,3、加载业务代码,将数据库中数据加载到内存中)

    最近公司要做功能迁移,原来的后台使用的Netty,现在要迁移到在uap上,也就是说所有后台的代码不能通过netty写的加载顺序加载了. 问题就来了,怎样让迁移到tomcat的代码按照原来的加载顺序进行 ...

  2. iOS图片加载到内存中占用内存情况

    我的测试结果: 图片占用内存   图片尺寸           .png文件大小 1MB              512*512          316KB 4MB              10 ...

  3. 把图片加载到BufferedImage中

    把图片加载到BufferedImage 中有什么作用呢?它就可以利用 ImageIO.write(image, "JPEG", response.getOutputStream() ...

  4. Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能

    我们的Glide系列文章终于要进入收尾篇了.从我开始写这个系列的第一篇文章时,我就知道这会是一个很长的系列,只是没有想到竟然会写这么久. 在前面的六篇文章中,我们对Glide的方方面面都进行了学习,包 ...

  5. wp加载本地HTML(附带图片,CSS,JS)

    wp加载本地HTML(附带图片,CSS,JS) Windows Phone:Load Local HTML with Img,Css,Js by 唐小崇 http://www.cnblogs.com/ ...

  6. RecyclerView加载更多用notifyDataSetChanged()刷新图片闪烁

    首先来看看对比ListView看一下RecyclerView的Adapter主要增加了哪些方法: notifyItemChanged(int position) 更新列表position位置上的数据可 ...

  7. 动态加载/删除css文件以及图片预加载

    动态加载/删除css文件以及图片预加载   功能模块页面   最近,工作中遇到了一个比较奇葩的需求:要在一个页面(PC端)增加一个功能模块,但是这个页面在不久之后要重构,为了新增加的模块可以继续复用, ...

  8. 利用“反射”动态加载R文件中的资源

    前几天做一个Android下面数据库相关的应用.用ListVIew展示表中数据的时候我希望能给表中每一条记录,加一个展示的图片.但是用数据库保存图片是比较难搞的.于是就把所需图片都保存到res下的dr ...

  9. ArccGIS 10发布WFS服务并加载到Skyline中

    下面用ArcGIS Server 10.0将建筑物图层发布为WFS服务. (1)创建mxd文件.ArcMap打开建筑物图层,存为Buildings.mxd文件.注意:必须统一空间参考系,且要与图层的坐 ...

随机推荐

  1. docker 简单介绍及基础命令运用

    一.什么是docker? Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. 简单的来讲Docker实际上就是一个大型容器.容器是完全使用沙箱机制,相互之间不 ...

  2. GDB dump mem example和命令

    使用方法: You can use the commands dump, append, and restore to copy data between target memory and a fi ...

  3. 机器学习入门09 - 特征组合 (Feature Crosses)

    原文链接:https://developers.google.com/machine-learning/crash-course/feature-crosses/ 特征组合是指两个或多个特征相乘形成的 ...

  4. CSS Modules 与 scoped 的不一样

    What ? css 的作用域表现. Css modules 是一个CSS文件,其中所有类名和动画名称默认为局部作用域. 使用JS编译原生的CSS文件,使其具备模块化的能力,该文件需要import使用 ...

  5. sql server 性能调优之 逻辑内存消耗最大资源分析1 (自sqlserver服务启动以后)

    一.概述 IO 内存是sql server最重要的资源,数据从磁盘加载到内存,再从内存中缓存,输出到应用端,在sql server 内存初探中有介绍.在明白了sqlserver内存原理后,就能更好的分 ...

  6. 旅行,说走就走 Help? [C++数据类型和表达式]

    摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 乐天派.我却喜欢和老妈说"老妈小时候喜欢羡慕别人有动力,现在看 ...

  7. solr(五): centos中, 整合 tomcat&solr

    前言 虽然windows下, tomcat和solr整合起来灰常的方便, 但是, 一般像这种东西, 都很少部署在windows中, 更多的是部署到linux中去. 其实, 步骤是一样的, 这里, 我在 ...

  8. 动态规划法(十)最长公共子序列(LCS)问题

    问题介绍   给定一个序列\(X=<x_1,x_2,....,x_m>\),另一个序列\(Z=<z_1,z_2,....,z_k>\)满足如下条件时称为X的子序列:存在一个严格 ...

  9. [转]启动container的时候出现iptables: No chain/target/match by that name

    本文转自:https://blog.csdn.net/u013948858/article/details/83115388 问题: Error response from daemon: drive ...

  10. [转]Docker(三):Dockerfile 命令详解

    本文转自:https://blog.csdn.net/ityouknow/article/details/79600406 上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dock ...