首先布局页面,

<?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. Impl模式实现之注意内联

    最近学习muduo源码时,对于内联函数有了更深刻的认知. 内联(inline)在代码执行方面具有优势,但是有时使用不当,或者稍微不注意,就会造成编译错误. 以下将通过Impl实现说明一二: 头文件: ...

  2. Spring Boot最核心的27个注解,你了解多少?

    导读 Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务框架Spring ...

  3. Struts标签<bean:write><logic:iterate></logic:equal>的组合使用小例

    form表单中的一个下拉列表控件的代码如下 <select name="taskname" id="taskname" class="selec ...

  4. Android--多线程之Looper

    前言 上一篇博客讲解了Handler实现线程间通信,这篇博客讲解一下Handler运行的原理,其中涉及到MessageQueue.Looper.简要来讲,Handler会把一个线程消息发送给当前线程的 ...

  5. File Explore 中data权限修改,实体机

    如图: 1)root手机,360root 2)RootBrowser 改权限 3)ok

  6. MongoDB 菜鸟入门“秘籍”

    1.MongoDB介绍 1.1 什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. Mo ...

  7. 浅析JavaScript之数组

    一  概述 JavaScript数组同后端语言一样,具有它自己的数据结构,归根结底,这种数据结构,本质就是一种集合. 在后端语言中(如java,.net等),数组是这样定义的:数组是用来存储相同数据类 ...

  8. Java反射,注解,以及动态代理

    Java反射,注解,以及动态代理 基础  最近在准备实习面试,被学长问到了Java反射,注解和动态代理的内容,发现有点自己有点懵,这几天查了很多资料,就来说下自己的理解吧[如有错误,望指正] Java ...

  9. Java设计模式学习记录-观察者模式

    前言 观察者模式也是对象行为模式的一种,又叫做发表-订阅(Publish/Subscribe)模式.模型-视图(Model/View)模式. 咱们目前用的最多的就是各种MQ(Message Queue ...

  10. iOS网络请求-AFNetworking源码解析

    趁着端午节日,自己没有什么过多的安排,准备花4-5天左右,针对网络请求源码AFNetworking和YTKNetwork进行解析以及这两年多iOS实际开发经验(其实YTKNetwork也是对AFNet ...