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

涉及到的知识点:

1 sdcard读写权限
2 弹出选择图片资源对话框
3 保存图片
4 遍历目录,保存图片路径
5 加载图片资源
6 显示图片

一 :SdCard 读写权限,见我的博客
  http://blog.csdn.net/taoerit/article/details/51737438

二: 布局文件:
<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) {
		
		}
	}
	
}

四:效果图
Android 选择图片,加载图片,显示图片 综合案例_第1张图片



Android 选择图片,加载图片,显示图片 综合案例_第2张图片
Android 选择图片,加载图片,显示图片 综合案例_第3张图片



Android 选择图片,加载图片,显示图片 综合案例_第4张图片








你可能感兴趣的:(android,bitmap,遍历目录,加载图片,保存图片)