HttpURLConnection和HttpClient都可以访问网络,前者是Java的标准类,后者是Apache的一个开源项目,两者使用起来效果一样,但后者更为简单。
以下是针对前者完成的一个实例:
首先写好布局文件:
<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=".MainActivity" >
<ImageView
android:id="@+id/iv"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1" />
<EditText
android:id="@+id/et_path"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="请输入图片路径"
android:src="@drawable/
android:maxLines="1" />
<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="click" android:text="浏览" />
</LinearLayout>
界面交互
package cn.edu.bzu.imageviewdemo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
protected static final int CHANGE_UI = 1;
protected static final int ERROR = 2;
private EditText et_path;
private ImageView iv;
// 主线程创建消息处理器
private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
if(msg.what == CHANGE_UI){
Bitmap bitmap = (Bitmap) msg.obj;
iv.setImageBitmap(bitmap);
}else if(msg.what == ERROR){
Toast.makeText(MainActivity.this, "显示图片错误", 0).show();
}
};
};
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_path = (EditText) findViewById(R.id.et_path);
iv = (ImageView) findViewById(R.id.iv);
}
public void click(View view) {
final String path = et_path.getText().toString().trim();
if (TextUtils.isEmpty(path)) {
Toast.makeText(this, "图片路径不能为空", Toast.LENGTH_SHORT).show();
} else {
//子线程请求网络,Android4.0以后访问网络不能放在主线程中
new Thread() {
public void run() {
// 连接服务器 get 请求 获取图片.
try {
URL url = new URL(path); //创建URL对象
// 根据url 发送 http的请求.
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
// 设置请求的方式
conn.setRequestMethod("GET");
//设置超时时间
conn.setConnectTimeout(5000);
// 得到服务器返回的响应码
int code = conn.getResponseCode();
//请求网络成功后返回码是200
if (code == 200) {
//获取输入流
InputStream is = conn.getInputStream();
//将流转换成Bitmap对象
Bitmap bitmap = BitmapFactory.decodeStream(is);
//iv.setImageBitmap(bitmap);
//TODO: 告诉主线程一个消息:帮我更改界面。内容:bitmap
Message msg = new Message();
msg.what = CHANGE_UI;
msg.obj = bitmap;
handler.sendMessage(msg);
} else {
//返回码不是200 请求服务器失败
Message msg = new Message();
msg.what = ERROR;
handler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
Message msg = new Message();
msg.what = ERROR;
handler.sendMessage(msg);
}
};
}.start();
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# 图片加载
# Android常用的图片加载库
# Android Fresco图片加载优化的方案
# Android实现图片加载进度提示
# Android框架Volley使用:ImageRequest请求实现图片加载
# Android编程图片加载类ImageLoader定义与用法实例分析
# Android基于Glide v4.x的图片加载进度监听
# Android ListView实现ImageLoader图片加载的方法
# Android中RecyclerView 滑动时图片加载的优化
# Android图片加载框架Glide的基本用法介绍
# Android图片加载利器之Picasso基本用法
# Android 官推 kotlin-first 的图片加载库——Coil的使用入门
# 放在
# 帮我
# 请输入
# 写好
# 开源
# 大家多多
# 为空
# onClick
# Button
# style
# click
# text
# maxLines
# et_path
# EditText
# layout_weight
# wrap_content
# drawable
# src
# hint
相关文章:
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
nginx修改上传文件大小限制的方法
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
C#如何使用XPathNavigator高效查询XML
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
学校建站服务器如何选型才能满足性能需求?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
在线制作视频的网站有哪些,电脑如何制作视频短片?
模具网站制作流程,如何找模具客户?
C#怎么创建控制台应用 C# Console App项目创建方法
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
宝塔面板如何快速创建新站点?
C#如何序列化对象为XML XmlSerializer用法
制作网站的公司有哪些,做一个公司网站要多少钱?
如何在Ubuntu系统下快速搭建WordPress个人网站?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
如何设计高效校园网站?
怎么将XML数据可视化 D3.js加载XML
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
Java解压缩zip - 解压缩多个文件或文件夹实例
,如何利用word制作宣传手册?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
建站主机服务器选购指南:轻量应用与VPS配置解析
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
建站之星在线版空间:自助建站+智能模板一键生成方案
定制建站如何定义?其核心优势是什么?
如何用腾讯建站主机快速创建免费网站?
如何制作算命网站,怎么注册算命网站?
如何做网站制作流程,*游戏网站怎么搭建?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
开心动漫网站制作软件下载,十分开心动画为何停播?
建站之星图片链接生成指南:自助建站与智能设计教程
如何通过万网虚拟主机快速搭建网站?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
如何快速搭建自助建站会员专属系统?
建站主机CVM配置优化、SEO策略与性能提升指南
电商平台网站制作流程,电商网站如何制作?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
建站之星如何快速更换网站模板?
*请认真填写需求信息,我们会在24小时内与您取得联系。