图片查看器

来源:互联网 发布:php空间 编辑:程序博客网 时间:2024/06/05 09:27
<pre name="code" class="java">package com.xh.tx.images;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;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.util.Log;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{protected static final String TAG="MainActivity";ImageView image=null;EditText edit = null;Handler handler = new Handler(){//接收一个消息@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);if(msg.what==1){Bitmap bitmap = (Bitmap) msg.obj;image.setImageBitmap(bitmap);}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);image = (ImageView) findViewById(R.id.img);edit = (EditText) findViewById(R.id.et_net);Button button = (Button) findViewById(R.id.bt_get);button.setOnClickListener(this);}/** * 1.访问网络不能直接放在主方法里面(android.os.NetworkOnMainThreadException),应该放在一个线程里面 * 2. android.view.ViewRootImpl$CalledFromWrongThreadException: 只能在主线程或者UI线程里面修改视图,应该用通信来解决 */@Overridepublic void onClick(View v) {final String uri = edit.getText().toString(); new Thread(new Runnable(){@Overridepublic void run() {Bitmap bitmap = getImageFromNet(uri);if(null != bitmap){Message msg = new Message();msg.what = 1; //你是谁msg.obj = bitmap;handler.sendMessage(msg); //发送一个消息//image.setImageBitmap(bitmap); Log.i(TAG, "========" + bitmap);}else{//Toast.makeText(MainActivity.this, "获取图片失败", 0).show();}}  }).start();}private Bitmap getImageFromNet(String uri) {HttpURLConnection conn = null;//1.首先将地址转换为Uri//Uri net_uri = Uri.parse(uri); //这种方式是错误的URL url;try {url = new URL(uri);//2. 获取网络连接conn = (HttpURLConnection) url.openConnection(); //这个地方要转换一次,转换为你获取图片的协议连接//3. 设置请求的一些常用的参数conn.setConnectTimeout(30000);//设置超时conn.setDoInput(true); //设置请求可以放服务器写入数据conn.setReadTimeout(30000); //设置连接去读取数据的超时时间//4.真正请求图片,然后把从网络上请求到的二进制流保存到了inputStream里面conn.connect();InputStream in = conn.getInputStream();Bitmap bitmap = BitmapFactory.decodeStream(in); //BitMap的图片工厂,创建出一个图片return bitmap;} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{//5. 关闭连接if(null != conn){conn.disconnect(); }}return null;}}


                                             
0 0
原创粉丝点击