浏览网络中的图片

来源:互联网 发布:python练手项目 编辑:程序博客网 时间:2024/06/03 05:43

   在日常应用中,经常不需要将网络中的图片保存到我们的手机中,只是在线浏览一下内容而已。此时可以使用类HttpURLConnection打开网络链接,这样就可以获取链接中的数据,将获取的数据用InputStream的方式保存在内存空间中。具体实现如下:

(1)布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.demo.picturedemo.MainActivity">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical">        <LinearLayout            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_weight="1.5"            android:orientation="vertical">            <EditText                android:id="@+id/edit_URL"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:text="https://gss3.bdstatic.com/-Po3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike72%2C5%2C5%2C72%2C24/sign=6ebfda6f87cb39dbd5cd6f04b17f6241/d6ca7bcb0a46f21f0d72e0d6f0246b600d33aef5.jpg"/>            <Button                android:id="@+id/btn_show"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="显示"/>        </LinearLayout>        <LinearLayout            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_weight="1">            <ImageView                android:id="@+id/img"                android:layout_width="match_parent"                android:layout_height="match_parent"/>        </LinearLayout>    </LinearLayout></LinearLayout>

(2)MainActivity代码

package com.demo.picturedemo;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Handler;import android.os.Message;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class MainActivity extends Activity {    private EditText mEdit_URL;    private Button mBtn_show;    private ImageView mImageView;    private Bitmap bitmap=null;    private Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what){                case 0:                    mImageView.setImageBitmap(bitmap);                    break;            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    /**     * 打开链接,获取图片输入流,并转换为bitmap格式     * @param url     * @return     */    private Bitmap loadImageFromNewWork(String url){        Bitmap bitmap=null;        URL imageURL=null;        try {            imageURL=new URL(url);        } catch (MalformedURLException e) {            e.printStackTrace();        }        try {            HttpURLConnection conn= (HttpURLConnection) imageURL.openConnection();            conn.connect();            InputStream is=conn.getInputStream();            bitmap= BitmapFactory.decodeStream(is);            is.close();        } catch (IOException e) {            e.printStackTrace();        }        return bitmap;    }    public void showView_onLine(){        new Thread(new Runnable() {            @Override            public void run() {                bitmap=loadImageFromNewWork(mEdit_URL.getText().toString());                handler.sendEmptyMessage(0);            }        }).start();    }    public void initView(){        mEdit_URL= (EditText) findViewById(R.id.edit_URL);        mBtn_show= (Button) findViewById(R.id.btn_show);        mImageView= (ImageView) findViewById(R.id.img);        mBtn_show.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                showView_onLine();            }        });    }}