实现加载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文件.注意:必须统一空间参考系,且要与图层的坐 ...
随机推荐
- 机器学习入门12 - 分类 (Classification)
原文链接:https://developers.google.com/machine-learning/crash-course/classification/ 1- 指定阈值 为了将逻辑回归值映射到 ...
- Python - GUI(Graphical User Interface,图形用户界面)
Tkinter https://docs.python.org/3/library/tkinter.html Python自带的标准GUI库,可用于快速创建GUI应用程序,能够满足基本的GUI程序要求 ...
- git使用方法----如何利用git管理代码?如何使用git将代码传到github中去
## 在文件夹中打开 git here; 1.git init ===初始化一个仓库(这个仓库会存放,git对我们代码进行备份的文件)2.配置个人信息 -- --在git中设置当前使用的用户是==( ...
- SPA架构的优点和缺点以及一些思考
SPA是什么? 全称是单页面应用. 一个SPA就是一个WEB应用,它所需的资源(HTML CSS JS等),在一次请求中就加载完成,也就是不需刷新地动态加载. 用术语“单页”就是因为页面在初始化加载后 ...
- 【原】使用vue2+vue-router+vuex写一个cnode的脚手架
最近喜欢上了markdown的书写方式,所以博客直接写在github上来,点击查看
- Django | 页面数据的缓存与使用
为什么要使用缓存? 一个动态网站的基本权衡点就是,它是动态的. 每次用户请求页面,服务器会重新计算.从开销处理的角度来看,这比你读取一个现成的标准文件的代价要昂贵的多 使用缓存,将多用户访问时基本相同 ...
- Java并发编程-再谈 AbstractQueuedSynchronizer 1 :独占模式
关于AbstractQueuedSynchronizer JDK1.5之后引入了并发包java.util.concurrent,大大提高了Java程序的并发性能.关于java.util.concurr ...
- input的三个属性autocomplete、autocapitalize和autocorrect
下面的input的三个属性是H5新增的属性 <input type="text" class="input-search" placeholder=&qu ...
- Mysql加锁过程详解(4)-select for update/lock in share mode 对事务并发性影响
Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...
- tomcat通过一个端口号实现多域名访问
最近在一个项目中遇到这样的一个场景,在一台服务器一个tomcat一个端口配置多个域名.没想到解决方法这么简单,通过虚拟目录来实现. 修改tomcat安装路径下/conf下的server.xml vim ...