博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 42 获取图片
阅读量:7088 次
发布时间:2019-06-28

本文共 5421 字,大约阅读时间需要 18 分钟。

资源中获取图片:可以从工程assets文件夹、res/drawble文件夹、sd卡、服务端下载图片。

 页面:

 java

package com.sxt.day06_08;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.util.EntityUtils;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageView;public class MainActivity extends Activity {    ImageView mImageView;    static final String FILE_NAME="sxt_logo.png";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        setListener();    }    private void setListener() {        setResetClickListener();        setDecodeFileClickListener();        setDecodeResourceClickListener();        setDecodeStreamClickListener();        setDecodeByteArrayClickListener();    }    private void setDecodeByteArrayClickListener() {        findViewById(R.id.btnDecodeByteArray).setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                new Thread(){                    public void run() {                        HttpGet get=new HttpGet("http://10.0.2.2/"+FILE_NAME);//服务端资源文件路径                        HttpClient client=new DefaultHttpClient();                        try {                            HttpResponse response = client.execute(get);                            HttpEntity entity = response.getEntity();//                            byte[] data = EntityUtils.toByteArray(entity);                            final Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);                            //工作线程不能修改UI,可以用Handler做,runOnUiThread方法会把里面的代码发送给主线程,修改UI。                            //Runnable可以被多个线程共享,工作线程可以把该Runnable对象交给主线程由主线程执行。                            runOnUiThread(new Runnable() {                                @Override                                public void run() {                                    mImageView.setImageBitmap(bitmap);                                }                            });                        } catch (ClientProtocolException e) {                            e.printStackTrace();                        } catch (IOException e) {                            e.printStackTrace();                        }finally{                            if(client!=null){                                client.getConnectionManager().shutdown();//关闭                            }                        }                    };                }.start();            }        });    }        private void setDecodeStreamClickListener() {        findViewById(R.id.btnDecodeStream).setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);                File file=new File(dir, FILE_NAME);//sd卡图片路径                FileInputStream in=null;                try {                    in=new FileInputStream(file);                    Bitmap bitmap = BitmapFactory.decodeStream(in);                    mImageView.setImageBitmap(bitmap);                } catch (FileNotFoundException e) {                    e.printStackTrace();                }finally{                    if(in!=null){                        try {                            in.close();                        } catch (IOException e) {                            e.printStackTrace();                        }                    }                }            }        });    }    private void setDecodeResourceClickListener() {        findViewById(R.id.btnDecodeResource).setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                mImageView.setImageResource(R.drawable.sxt_logo);            }        });    }    private void setResetClickListener() {
//点击图片还原 findViewById(R.id.iv).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mImageView.setImageResource(R.drawable.ic_launcher); } }); } //获取sd卡的图片文件 private void setDecodeFileClickListener() { findViewById(R.id.btnDecodeFile).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);//sd卡的图片的路径 File file=new File(dir, FILE_NAME);//获取sd卡的图片文件 Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); mImageView.setImageBitmap(bitmap); } }); } private void initView() { mImageView=(ImageView) findViewById(R.id.iv); }}

 工程描述文件添加:

申请网络权限
申请读sd卡权限

 

本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/4889921.html,如需转载请自行联系原作者

你可能感兴趣的文章
RavenDB:基于Windows/.NET平台的NoSQL数据库
查看>>
陕西师范大学:“资助大数据”助推“精准扶贫”
查看>>
浅述云空间与网盘之间的差别所在
查看>>
中国电信密集开通南沙多个光缆4G基站
查看>>
清华产业十大创新项目评选 新华三H3Cloud OS夺冠
查看>>
Synaptics车用指纹传感器
查看>>
MXNet 0.11发布,加入动态图接口Gluon,还有两位CMU教授的亲笔教程
查看>>
AIM推出医疗设备RFID系统干扰评估标准
查看>>
《系统分析与设计方法及实践》一2.2 敏捷软件开发
查看>>
5G全球统一标准有望形成 中国话语权提升
查看>>
天龙光电毛利率异常 数千万元预收不知从何而来
查看>>
双态IT时代,你需要什么样的IT咨询服务?
查看>>
iOS9.3激活失败 疑似激活服务器被挤爆
查看>>
最低调的恶意软件之Dimnie瞄准GitHub开发人员
查看>>
运营商发展大数据的四大误区
查看>>
Facebook新的图搜索?效果不是很理想
查看>>
Google公司致力发展企业云市场
查看>>
日媒称黑客组织瞄上中企:目标企业被迫停牌3年
查看>>
Fortinet实验室提醒用户注意Office高危漏洞
查看>>
10年后全球智慧城市市场规模将达到3.5万亿美元
查看>>