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
相关文章:
学校免费自助建站系统:智能生成+拖拽设计+多端适配
如何通过二级域名建站提升品牌影响力?
建站之星Pro快速搭建教程:模板选择与功能配置指南
如何在云虚拟主机上快速搭建个人网站?
制作网站外包平台,自动化接单网站有哪些?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
c# 在ASP.NET Core中管理和取消后台任务
常州企业建站如何选择最佳模板?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
如何用景安虚拟主机手机版绑定域名建站?
如何在阿里云虚拟主机上快速搭建个人网站?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
建站之星后台密码遗忘如何找回?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
网站按钮制作软件,如何实现网页中按钮的自动点击?
成都网站制作报价公司,成都工业用气开户费用?
定制建站如何定义?其核心优势是什么?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
西安大型网站制作公司,西安招聘网站最好的是哪个?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
大同网页,大同瑞慈医院官网?
手机网站制作与建设方案,手机网站如何建设?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
临沂网站制作企业,临沂第三中学官方网站?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何快速搭建个人网站并优化SEO?
制作网站怎么制作,*游戏网站怎么搭建?
如何通过VPS搭建网站快速盈利?
如何生成腾讯云建站专用兑换码?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
建站之星如何开启自定义404页面避免用户流失?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
网站制作公司排行榜,抖音怎样做个人官方网站
香港服务器如何优化才能显著提升网站加载速度?
高防服务器租用如何选择配置与防御等级?
如何在万网自助建站中设置域名及备案?
建站之星CMS五站合一模板配置与SEO优化指南
如何在万网ECS上快速搭建专属网站?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
网页设计网站制作软件,microsoft office哪个可以创建网页?
定制建站价位费用解析与套餐推荐全攻略
如何设置并定期更换建站之星安全管理员密码?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
*请认真填写需求信息,我们会在24小时内与您取得联系。