通过URLHttpConnection方式来取得图片,并且显示在ImageView上
界面:
代码xml:
<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="com.zzw.watctImage.MainActivity" > <ImageView
android:id="@+id/image_view"
android:layout_width="match_parent"
android:src="@drawable/t01a7b264978bb316f1"
android:layout_height="wrap_content"
android:layout_weight="1" /> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" > <EditText
android:id="@+id/url_edit"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:singleLine="true"
android:text="http://p1.so.qhimg.com/t017cf2863df563308b.jpg" /> <Button
android:id="@+id/get"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="获得图片"
android:textColor="@android:color/holo_blue_light" />
</LinearLayout> </LinearLayout>
XML
java代码中通过点击获得图片按钮得到编辑好的URL的图片
java代码:
package com.zzw.watctImage; import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection; import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView; public class MainActivity extends Activity implements OnClickListener {
ImageView image_view = null;
EditText image_uri = null;
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if (msg.what == 0) {
Bitmap bitmap = (Bitmap) msg.obj;
image_view.setImageBitmap(bitmap);
} } };
/**
* 1.访问网络不能直接放在主方法里面(android.os.NetworkOnMainThreadException), 应该放在一个线程里面
* 2.android.view.ViewRootImpl$CalledFromWrongThreadException:
* 只能在主线程或者UI线程里面修改视图,应该用通信来解决
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
} // 初始化
public void init() {
image_view = (ImageView) findViewById(R.id.image_view);
image_uri = (EditText) findViewById(R.id.url_edit);
findViewById(R.id.get).setOnClickListener(this);
} @Override
public void onClick(View v) {
final String uri = image_uri.getText().toString();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Bitmap bitmap = getBitmap(uri);
if (bitmap != null) {
Message msg = new Message();
msg.what = 0;// 说明你是谁
msg.obj = bitmap;
handler.sendMessage(msg);
} }
}).start();
;
} // bitmap------>位图
public Bitmap getBitmap(String uri) {
HttpURLConnection conn = null;
try {
// 1、获得图片的url
URL url = new URL(uri); // 2、获得网络连接
conn = (HttpURLConnection) url.openConnection(); // 3、设置请求的一些常用参数
conn.setReadTimeout(3000);// 设置连接去读取数据的最长时间
conn.setConnectTimeout(3000);// 设置超时
conn.setDoInput(true);// 设置请求可以让服务器写入数据 // 4、真正的请求图片,然后把从服务器上请求的二进制流保存到inputStream里面
conn.connect();
InputStream in = conn.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(in);
return bitmap;
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 5、关闭网络连接
finally {
if (conn != null) {
conn.disconnect();
}
}
return null;
}
}
JAVA
通过URLHttpConnection方式来取得图片,并且显示在ImageView上的更多相关文章
- Android处理Bitmap使其能够不失真等比缩放裁剪后显示在ImageView上
Android开发过程中,我们有时需要动态得显示一些图片,并且这些图片的大小差距会十分大,如果需求并不是需要图片完整显示,但是需要不失真,并且要图片中间部分的情况下,我们需要做一系列处理,因为这个时候 ...
- java 通过流的方式读取本地图片并显示在jsp 页面上(类型以jpg、png等结尾的图片)
Java代码: File filePic = new File(path+"1-ab1.png"); if(filePic.exists()){ FileInputStream i ...
- 在Android中如何获取视频的第一帧图片并显示在一个ImageView中
String path = Environment.getExternalStorageDirectory().getPath(); MediaMetadataRetriever media = n ...
- C# 通过URL获取图片并显示在PictureBox上的方法
, ); System.Net.WebRequest webreq = System.Net.WebRequest.Create(url); System.Net.WebResponse webres ...
- 打开图片并显示在面板上demo
import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; ...
- 用JSP从数据库中读取图片并显示在网页上
<1>先在mysql下建立如下的table. 并insert图像. mysql.sql文件如下: CREATE TABLE photo ( photo_no int(6) unsigned ...
- JSP读取数据库二进制图片并显示
用JSP从数据库中读取二进制图片并显示在网页上 环境mysql+tomcat: 先在mysql下建立如下的表. 并存储了二进制图像(二进制格式存储图片可以参考我的另一篇博客:https://www.c ...
- [Android] 拍照、截图、保存并显示在ImageView控件中
近期在做Android的项目,当中部分涉及到图像处理的内容.这里先讲述怎样调用Camera应用程序进行拍照,并截图和保存显示在ImageView控件中以及遇到的困难和解决方法. PS:作者购买 ...
- .Net程序员安卓学习之路5:使用xutils注入View和事件以及图片的显示
xUtils注入和图片显示 一.xUtils注入 引用官方介绍: ViewUtils模块: •android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定: •新的事件绑定方式,使用混淆工 ...
随机推荐
- HDU 5521 [图论][最短路][建图灵感]
/* 思前想后 还是决定坚持写博客吧... 题意: n个点,m个集合.每个集合里边的点是联通的且任意两点之间有一条dis[i]的边(每个集合一个dis[i]) 求同时从第1个点和第n个点出发的两个人相 ...
- Codeforces 450D Jzzhu and Cities [heap优化dij]
#include<bits/stdc++.h> #define MAXN 100050 #define MAXM 900000 using namespace std; struct st ...
- LaTex学习笔记
常见符号大全:http://ia.wikipedia.org/wiki/Wikipedia:LaTeX_symbols 字体加粗: \textbf{} 换页:\newpage 大于等于,小于等于 ...
- 编码中常用的SQL语法
蓝色标注的都是比较常见的SQL ====================== 开发中常见的SQL: left join , right join 防止丢弃数据 inner join CASE WHNE ...
- Oracle数据库——函数 http://www.jb51.net/article/40469.htm
1====分析函数 相当于把分组后的结果加到每一行里 SELECT t.loan_contract_no,t.loan_name,t.loan_amount,ROWNUM, row_number ...
- AngularJs 入门系列-1 使用 AngularJs 搭建页面基本框架
每当看到前端程序员在脚本.样式.表单处理逻辑中苦苦挣扎的时候,我就在想,为什么不用Angular Js 呢? Angular Js 支持页面前端的 MVC 模式开发,在 Angular JS 的支持下 ...
- windows 开机启动(为了关闭虚拟机的那么多开机进程)
1.阻止VMware开机时的几个进程应用 禁用系统相关服务即可! 具体操作如下:开始运行中输入msconfig,然后点击服务!这时会出现很多服务选项.点击下面的隐藏所有microsoft服务,就只剩下 ...
- Appnium移动自动化框架初探
作者:cryanimal QQ:164166060 本文简要介绍了appnium自动化框架的架构.加载流程.支持语言.相关配置,以及元素定位工具等. 官方网站: http://appium.io Ap ...
- 传智Java基础知识测试
共40道选择题,每题2.5分.多选题有错则全错,全对才满分. 单选题: 1. 下列哪个声明是错误的?(B) A. int i=10; B. float f=1.1; C. double ...
- 【测试】trunc和round的区别
trunc是截断:round是四舍五入:下面通过一个例子具体看一下trunc和round的不同 SQL),trunc() from dual; TRUNC() TRUNC() ------------ ...