实现加载Tomcat服务器中的图片,并且有进度条提示进度
首先布局页面,
<?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服务器中的图片,并且有进度条提示进度的更多相关文章
- Tomcat启动时加载数据到缓存---web.xml中listener加载顺序(例如顺序:1、初始化spring容器,2、初始化线程池,3、加载业务代码,将数据库中数据加载到内存中)
最近公司要做功能迁移,原来的后台使用的Netty,现在要迁移到在uap上,也就是说所有后台的代码不能通过netty写的加载顺序加载了. 问题就来了,怎样让迁移到tomcat的代码按照原来的加载顺序进行 ...
- iOS图片加载到内存中占用内存情况
我的测试结果: 图片占用内存 图片尺寸 .png文件大小 1MB 512*512 316KB 4MB 10 ...
- 把图片加载到BufferedImage中
把图片加载到BufferedImage 中有什么作用呢?它就可以利用 ImageIO.write(image, "JPEG", response.getOutputStream() ...
- Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能
我们的Glide系列文章终于要进入收尾篇了.从我开始写这个系列的第一篇文章时,我就知道这会是一个很长的系列,只是没有想到竟然会写这么久. 在前面的六篇文章中,我们对Glide的方方面面都进行了学习,包 ...
- wp加载本地HTML(附带图片,CSS,JS)
wp加载本地HTML(附带图片,CSS,JS) Windows Phone:Load Local HTML with Img,Css,Js by 唐小崇 http://www.cnblogs.com/ ...
- RecyclerView加载更多用notifyDataSetChanged()刷新图片闪烁
首先来看看对比ListView看一下RecyclerView的Adapter主要增加了哪些方法: notifyItemChanged(int position) 更新列表position位置上的数据可 ...
- 动态加载/删除css文件以及图片预加载
动态加载/删除css文件以及图片预加载 功能模块页面 最近,工作中遇到了一个比较奇葩的需求:要在一个页面(PC端)增加一个功能模块,但是这个页面在不久之后要重构,为了新增加的模块可以继续复用, ...
- 利用“反射”动态加载R文件中的资源
前几天做一个Android下面数据库相关的应用.用ListVIew展示表中数据的时候我希望能给表中每一条记录,加一个展示的图片.但是用数据库保存图片是比较难搞的.于是就把所需图片都保存到res下的dr ...
- ArccGIS 10发布WFS服务并加载到Skyline中
下面用ArcGIS Server 10.0将建筑物图层发布为WFS服务. (1)创建mxd文件.ArcMap打开建筑物图层,存为Buildings.mxd文件.注意:必须统一空间参考系,且要与图层的坐 ...
随机推荐
- vue axios 简单封装以及思考
先安装 axios npm install axios axios的详细介绍以及用法 就不多说了请 移步 github ➡️ https://github.com/axios/axios 下面是简单 ...
- Plugin with id 'com.novoda.bintray-release' not found.的解决方案
import Module的时候,有时候会提示Plugin with id 'com.novoda.bintray-release' not found. 点击Open File,定位到该Module ...
- 简易远程消息交换协议SRMP
一.SRMP目标定位 经过十多年实战经验积累以及多方共同讨论,新生命团队(https://github.com/newlifex)制订了一种简单而又具有较好扩展性的RPC(Remote Procedu ...
- SpringBoot2.0源码分析(四):spring-data-jpa分析
SpringBoot具体整合rabbitMQ可参考:SpringBoot2.0应用(四):SpringBoot2.0之spring-data-jpa JpaRepositories自动注入 当项目中存 ...
- Java Web中提交表单之后跳转到WebContent目录下的子目录里的jsp文件
最近在做一个系统,需要完成登录动能进行跳转到另一个页面.在这个项目里面,我把 jsp,css,js文件都统一放在 WebContent 目录下的一个 WebPage 里面. 按照以前的习惯,写好了 s ...
- XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...
- HTML语法介绍
一 基本标签(块级标签和内联标签) <hn>: n的取值范围是1~6; 从大到小. 用来表示标题. <p>: 段落标签. 包裹的内容被换行.并且也上下内容之间有一行空白. &l ...
- 【Vue.js】基于vue的实时搜索,在结果中高亮显示关键词
一.搜素效果如下: 二.核心 1)利用oninput属性来触发搜素功能 2)利用RegExp来对字符串来全局匹配关键字,利用replace方法来对匹配的关键字进行嵌入高亮的<span class ...
- 开源项目filepond的独立自由之路:城市套路深
微信原文更清晰:https://mp.weixin.qq.com/s/dv39XvvDNlDqvSgrhN2f7A 最近一直在做一个有关独立开发者友链联盟的插件项目,在做到上传头像时,满网络找最好的头 ...
- Go Web:RESTful web service示例
RESTful架构的简介 web服务的架构模式主要有2种:SOAP和REST.SOAP和REST都回答了同一个问题:如何访问web服务. SOAP风格的程序是功能驱动的,要借助xml来传递数据,明确表 ...