黎活明8天快速掌握android视频教程--23_网络通信之网络图片查看器
1、首先新建立一个java web项目的工程。使用的是myeclipe开发软件

图片的下载路径是http://192.168.1.103:8080/lihuoming_23/3.png 当前手机和电脑在同一个局域网范围内 2 、Android项目的工程如下

整个工程采用MVC模式:
1、controller是控制层、包括activity 、fragment 、adapter、broadcast、service
2、bussiess是业务层,主要负责具体的业务操作,例如从后台下载下载图片这就是一个具体的业务操作,业务操作的时候,最后不要对业务操作过程中产生的异常进行处理,应该将异常抛出去到控制层,由控制层对异常进行处理,控制层如果收到了异常,说明该业务失败,控制层在做出相应的toast提示,或者提示用于做出相应的操作。
这里最好的操作是:定义一个业务操作接口,然后在写一个业务的实现类,controller只和业务类打交道
3、模型层:主要是对数据进行操作、包括javabean对象、db dao
4、utils:工具类
2 Android studio工程
1、xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".controller.activity.MainActivity"> <TextView
android:textSize="25sp"
android:text="从网络获得下载的图片"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_main_download"
android:textSize="25sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击下载"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/iv_main_show"/> </LinearLayout>
2 业务操作类
按照上面的规范最好写出:
先定义一个业务操作类的接口
public interface ImageBussiess {
public static byte[] downLoadImage(String path) throws Exception
}
然后定义业务的实现类
/**
* Created by Administrator on 2017/4/17.
* 下载图片的业务操作类,业务层不要try catch异常
* 应该将异常抛出去,由控制层activity来进行处理和显示
*
*/
public class ImageBussiessImp Implement ImageBussiess{
public static byte[] downLoadImage(String path) throws IOException {
URL url = new URL(path);
HttpURLConnection openConnection = (HttpURLConnection) url.openConnection();
openConnection.setConnectTimeout(5000);
openConnection.setRequestMethod("GET"); //采用get的请求方式
openConnection.connect();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
InputStream inputStream = null;
if(openConnection.getResponseCode() == 200){
inputStream = openConnection.getInputStream();
byte[] buffer = new byte[1024]; int len = -1;
while ((len = inputStream.read(buffer)) != -1){
outputStream.write(buffer,0,len);
}
}
inputStream.close();
return outputStream.toByteArray();
}
}
4 activity
public class MainActivity extends Activity {
private ImageView iv_main_show;
private Button btn_main_download;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initListener();
}
private void initListener() {
btn_main_download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ExecutorService executorService = Executors.newCachedThreadPool(); // 网络下载都必须在子线程中进行,这里使用的是线程池的方式开启线程
executorService.execute(new Runnable() {
@Override
public void run() {
String path = "http://192.168.1.103:8080/lihuoming_23/3.png";//myeclpise建立的工程
try {
byte[] datas = ImageBussiess.downLoadImage(path);
final Bitmap bitmap = BitmapFactory.decodeByteArray(datas, 0,
datas.length);
runOnUiThread(new Runnable() {
@Override
public void run() {
iv_main_show.setImageBitmap(bitmap);//界面的显示必须在主线程中,runOnUiThread就是在线程中更新界面的显示
}
});
} catch (final IOException e) {
e.printStackTrace();
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "图片下载失败" + e.toString(),
Toast.LENGTH_LONG).show();
}
});
;
}
}
});
}
});
}
private void initView() {
btn_main_download = (Button) findViewById(R.id.btn_main_download);
iv_main_show = (ImageView) findViewById(R.id.iv_main_show);
}
}
黎活明8天快速掌握android视频教程--23_网络通信之网络图片查看器的更多相关文章
- 黎活明8天快速掌握android视频教程--25_网络通信之资讯客户端
1 该项目的主要功能是:后台通过xml或者json格式返回后台的视频资讯,然后Android客户端界面显示出来 首先后台新建立一个java web后台 采用mvc的框架 所以的servlet都放在se ...
- 黎活明8天快速掌握android视频教程--24_网络通信之网页源码查看器
1 该项目的主要功能就是从将后台的html网页在Android的界面上显示出来 后台就是建立一个java web工程在工程尚建立一个html或者jsp文件就可以了,这里主要看Android客户端的程序 ...
- 黎活明8天快速掌握android视频教程--27_网络通信之通过GET和POST方式提交参数给web应用
1该项目主要实现Android客户端以get的方式或者post的方式向java web服务器提交参数 Android客户端通过get方式或者post方式将参数提交给后台服务器,后台服务器对收到的参数进 ...
- 黎活明8天快速掌握android视频教程--22_访问通信录中的联系人和添加联系人
Android系统中联系人的通讯录的contentProvide是一个单独的apk,显示在界面的contact也是一个独立的apk,联系人apk通过contentProvide访问底层的数据库. 现在 ...
- 黎活明8天快速掌握android视频教程--21_监听ContentProvider中数据的变化
采用ContentProvider除了可以让其他应用访问当前的app的数据之外,还有可以实现当app的数据发送变化的时候,通知注册了数据变化通知的调用者 其他所有的代码都和第20讲的一样,不同的地方看 ...
- 黎活明8天快速掌握android视频教程--20_采用ContentProvider对外共享数据
1.内容提供者是让当前的app的数据可以让其他应用访问,其他应该可以通过内容提供者访问当前app的数据库 contentProvider的主要目的是提供一个开发的接口,让其他的应该能够访问当前应用的数 ...
- 黎活明8天快速掌握android视频教程--19_采用ListView实现数据列表显示
1.首先整个程序也是采用mvc的框架 DbOpenHelper 类 package dB; import android.content.Context; import android.databas ...
- 黎活明8天快速掌握android视频教程--17_创建数据库与完成数据添删改查
1.我们首先来看下整个项目 项目也是采用mvc的框架 package dB; import android.content.Context; import android.database.sqlit ...
- 黎活明8天快速掌握android视频教程--16_采用SharedPreferences保存用户偏好设置参数
SharedPreferences保存的数据是xml格式,也是存在数据保存的下面四种权限: 我们来看看 我们来看看具体的业务操作类: /** * 文件名:SharedPrecences.java * ...
随机推荐
- centos7部署ELK测试
一.背景 学习ELK,动手实验. 参考:https://blog.csdn.net/qq_33406938/article/details/80307679 二.环境 虚拟机一台,已安装jdk1.8, ...
- 【Storm】安装教程
1.下载tar.gz包 2.上传解压,tar -zxvf 包 -C 路径 3.修改conf/storm.yaml storm.zookeeper.servers: - "bigboss1&q ...
- 初步理解 MySQL数据库
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1. 索引是做什么的? 索引用于快速找出在某个列中有一特定值的行.不使用索引,MYSQL必须从第1条记录 ...
- Java实现 蓝桥杯 历届试题 最大子阵
问题描述 给定一个n*m的矩阵A,求A中的一个非空子矩阵,使这个子矩阵中的元素和最大. 其中,A的子矩阵指在A中行和列均连续的一块. 输入格式 输入的第一行包含两个整数n, m,分别表示矩阵A的行数和 ...
- java实现第六届蓝桥杯奇妙的数字
奇妙的数字 奇妙的数字 小明发现了一个奇妙的数字.它的平方和立方正好把0~9的10个数字每个用且只用了一次. 你能猜出这个数字是多少吗? 请填写该数字,不要填写任何多余的内容. 结果:69 impor ...
- 【CSS】滚动条样式
/*定义滚动条宽高及背景,宽高分别对应横竖滚动条的尺寸*/ .scrollbar::-webkit-scrollbar{ width: 16px; height: 16px; background-c ...
- Jmeter之Json提取器详解(史上最全)
参考资料:https://www.bbsmax.com/A/D854lmBw5E/ Jsonpath在线测试:http://jsonpath.com/ 实际工作中用到的一些场景: 提取某个特定的值 提 ...
- IDEA2020年激活码
若出现无法使用,激活失败的情况,可以关注公众号:凌晨四点的程序员,回复消息"IDEA"持续更新最新激活码 2020年05月26更新(2020年6月份) OI7FTW2137-eyJ ...
- [RH134] 12-系统启动
1.系统启动流程 开机--->BIOS自检(需要检测的设备是否正常)--->磁盘的MBR分区--->BootLoader(引导加载器)加载内核--->识别各分区的文件系统 2. ...
- (九)不安全的HTTP方法
01 漏洞描述 <HTTP | HTTP报文>中介绍了HTTP的请求方法.在这些方法中,HTTP定义了一组被称为安全方法的方法:GET.HEAD.OPTIONS.TRACE,这些方法不会产 ...