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

Android 选择图片,加载图片,显示图片 综合案例

2016-06-22 23:22 701 查看
涉及到的知识点:

1 sdcard读写权限

2 弹出选择图片资源对话框

3 保存图片

4 遍历目录,保存图片路径

5 加载图片资源

6 显示图片

一 :SdCard 读写权限,见我的博客
/article/11900566.html

二: 布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.getimagepath.MainActivity"
android:orientation="vertical"
tools:ignore="MergeRootFrame" >

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="selecImage"
android:text="选择文件" />

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />

</LinearLayout>


三:代码:
package com.example.getimagepath;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.content.ContentResolver;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;

public class MainActivity extends ActionBarActivity {

public String imageDir = "/sdcard/ht/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 显示目录下所有的图片路径
TextView text = (TextView) findViewById(R.id.textView1);
text.setText("");

String[] files = getDirFiles(imageDir);
for(int i=0;i<files.length;i++){
text.append(files[i] +"\r\n");
}

// 加载 并显示图片
if(files.length != 0) {
ImageView image = (ImageView) findViewById(R.id.imageView1);
Bitmap bm = BitmapFactory.decodeFile(files[0]);
image.setImageBitmap(bm);
}

}

// 点击加载按钮弹出选择图片
public void selecImage(View v){

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, 1);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {

Uri uri = data.getData();
ContentResolver cr = this.getContentResolver();

try {
Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));

//将选择的图片,显示在主界面的imageview上
ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageBitmap(bitmap);

// 保存选择的图片文件 到指定目录
SaveImage(bitmap,imageDir + "win_back.png");

}

catch (FileNotFoundException e) {
Log.e("Exception", e.getMessage(),e);
}
}
super.onActivityResult(requestCode, resultCode, data);
}

// 保存图像文件
public void SaveImage(Bitmap bitmap,String filePath){

File file = new File(filePath);
FileOutputStream fos;

try {
fos = new FileOutputStream(file);
bitmap.compress(CompressFormat.PNG, 100, fos);
fos.close();
}catch(Exception e){
e.printStackTrace();
}

Intent intent = new Intent();
intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));
sendBroadcast(intent);
}

// 遍历目录,返回目录所有文件路径
public String[] getDirFiles(String dir) {

File[] currentFiles;

File root = new File(dir);

currentFiles = root.listFiles();

String[] files = new String[currentFiles.length] ;

for(int i=0;i<currentFiles.length;i++){
String filePath = imageDir + currentFiles[i].getName();
files[i] = filePath;
}
return files;
}

public void show(String msg) {
try {

Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();

} catch (Exception e) {

}
}

}


四:效果图











内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: