您的位置:首页 > 移动开发 > Android开发

android 42 获取图片

2015-10-18 17:47 716 查看




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


页面:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Button
android:id="@+id/btnDecodeFile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="从文件解析图片" />

<Button
android:id="@+id/btnDecodeStream"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="丛输入流解析" />

<Button
android:id="@+id/btnDecodeResource"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="从项目res/drawble中解析" />

<Button
android:id="@+id/btnDecodeByteArray"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="从字节数组解析" />
<ImageView                             显示解析的图片
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"/>
</LinearLayout>


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);
}
}


工程描述文件添加:

<uses-permission android:name="android.permission.INTERNET"/>     申请网络权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>   申请读sd卡权限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: