zoukankan      html  css  js  c++  java
  • andriod 缩略图Thumbnails学习

    /**
     * @(#)MainActivity.java
     * 
     * Copyright XXX.All rights reserved.
     * This software is the XXX system. 
     *
     * @Version: XXX
     * @JDK: jdk 1.6.0.XXX
     * @Module: androidThumbnail
     */ 
     /*- 		History
     **********************************************
     *  ID      DATE           PERSON       REASON
     *  1     2012-7-11    WuChaoWen    Created
     **********************************************
     */
    
    package com.example.androidthumbnail;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    
    import android.R.bool;
    import android.R.integer;
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.app.Dialog;
    import android.content.ContentResolver;
    import android.content.Context;
    import android.content.Intent;
    import android.database.Cursor;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.net.Uri;
    import android.os.Bundle;
    import android.provider.MediaStore;
    import android.provider.MediaStore.Images.Media;
    import android.provider.MediaStore.Images.Thumbnails;
    import android.util.Log;
    import android.view.View;
    import android.view.Window;
    import android.view.View.OnClickListener;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.Button;
    import android.widget.GridView;
    import android.widget.ImageView;
    import android.widget.ListAdapter;
    import android.widget.SimpleAdapter;
    import android.widget.Toast;
    
    /**
     * Class description goes here.
     * @author WuChaoWen
     * @since 2012-7-11
     */
    public class MainActivity extends Activity {
    	 public static String TAG = "Thumbnails";   
    	 public static boolean flag = true;
    	 ImageView ivImageShow;
    	    private GridView gridView;   
    	    private ArrayList<HashMap<String, String>> list;   
    	    private ContentResolver cr;  
    	    private ArrayList<String> fileList ;
    	    public void onCreate(Bundle savedInstanceState) {
    	        requestWindowFeature(Window.FEATURE_NO_TITLE);//去除标题
    	        super.onCreate(savedInstanceState);
    	        setContentView(R.layout.main);  
    	        findViews();
    	}
    	    
    	    
    	    @SuppressLint("ParserError")
    		private void findViews() {   
    	    	ivImageShow = (ImageView)this.findViewById(R.id.ivImageShow);
    	        gridView = (GridView) findViewById(R.id.gridview);   
    	        list = new ArrayList<HashMap<String, String>>();   
    	        fileList = new ArrayList<String>();
    	        cr = getContentResolver();   
    	        String[] projection = { Thumbnails._ID, Thumbnails.IMAGE_ID,   
    	                Thumbnails.DATA};   //所要查询的字段
    	        Cursor cursor = cr.query(Thumbnails.EXTERNAL_CONTENT_URI, projection,   
    	                null, null, null);   
    	        
    	        getColumnData(cursor);   
    	    //    changeFile();
    	        String[] from = { "path" };   
    	        int[] to = { R.id.ItemImage };   
    	        ListAdapter adapter = new GridAdapter(this, list, R.layout.item, from,to);   
    	        gridView.setAdapter(adapter);   
    	        gridView.setOnItemClickListener(listener);   
    	      
    	    }   
    	    
    	    
    	    public Uri[] uriArray;
    	    private void getColumnData(Cursor cur) {   
    	        if (cur.moveToFirst()) {   
    	            int _id;   
    	            int image_id;   
    	            String image_path;   
    	            int _idColumn = cur.getColumnIndex(Thumbnails._ID);   
    	            int image_idColumn = cur.getColumnIndex(Thumbnails.IMAGE_ID);   
    	            int dataColumn = cur.getColumnIndex(Thumbnails.DATA);   
    	            do {   
    	                // Get the field values   
    	                _id = cur.getInt(_idColumn);   
    	                image_id = cur.getInt(image_idColumn);   
    	                image_path = cur.getString(dataColumn);   
    	                // Do something with the values.   
    	                Log.i(TAG, _id + " image_id:" + image_id + " path:"  
    	                        + image_path + "---");   
    	                HashMap hash = new HashMap();   
    	                hash.put("image_id", image_id + "");   
    	                hash.put("path", image_path);   
    	                list.add(hash);   
    	  
    	                //根据image_id获取真实路径
    	               String path = getFileByImageId(image_id);
    	              fileList.add(path);
    	            } while (cur.moveToNext());   
    	  
    	        }   
    	    }  
    	    
    	    
    	    OnItemClickListener listener = new OnItemClickListener() {   
    	    	  
    	        @Override  
    	        public void onItemClick(AdapterView<?> parent, View view, int position,   
    	                long id) {   
    	            // TODO Auto-generated method stub   
    	        //1.获取选定图片的path
    	        	String path = "";
    	            String image_id = list.get(position).get("image_id");   
    	            Log.i(TAG, "---(^o^)----" + image_id);   
    	            String[] projection = { Media._ID, Media.DATA };   
    	            Cursor cursor = cr.query(Media.EXTERNAL_CONTENT_URI, projection,   
    	                    Media._ID + "=" + image_id, null, null);   
    	            if (cursor != null) {   
    	                cursor.moveToFirst();   
    	                 path = cursor.getString(cursor   
    	                        .getColumnIndex(Media.DATA));   
    	                 Log.i("path:", path);
    	            } else {   
    	                Toast.makeText(MainActivity.this, "Image doesn't exist!",   
    	                        Toast.LENGTH_SHORT).show();   
    	            }   
    	            
    	            
    	            //2.以一个对话框来显示图片
    	            
    	        	// TODO Auto-generated method stub
    	    		final Dialog dialog = new Dialog(MainActivity.this);
    	    		// 以对话框形式显示图片
    				dialog.setContentView(R.layout.image_show);
    				dialog.setTitle("图片显示");
    
    				ImageView ivImageShow = (ImageView) dialog.findViewById(R.id.ivImageShow);
    				Button btnClose = (Button) dialog.findViewById(R.id.btnClose);
    
    				btnClose.setOnClickListener(new OnClickListener() {
    					
    					@Override
    					public void onClick(View v) {
    						dialog.dismiss();
    					}
    					
    				});
    				
    				Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI.buildUpon().
    						  appendPath(Long.toString(id)).build();
    				FileUtil file = new FileUtil();
    				ContentResolver resolver = getContentResolver();
    				InputStream inputStream = null;  
    
    
    				// 从Uri中读取图片资源
    				try {
    					inputStream = new FileInputStream(path);  
    					Bitmap bitmap = BitmapFactory.decodeStream(inputStream);  
    					ivImageShow.setImageBitmap(bitmap);
    				} catch (Exception e) {
    					// TODO: handle exception
    					e.printStackTrace();
    				}
    
    				dialog.show();
    	  
    	        }   
    	    };   
    	    
    	    
    	    
    	    class GridAdapter extends SimpleAdapter {   
    	    	  
    	        public GridAdapter(Context context,   
    	                List<? extends Map<String, ?>> data, int resource,   
    	                String[] from, int[] to) {   
    	            super(context, data, resource, from, to);   
    	           
    	        }   
    	  
    	        // set the imageView using the path of image   
    	        public void setViewImage(ImageView v, String value) {   
    	            try {   
    	                Bitmap bitmap = BitmapFactory.decodeFile(value);   
    	                Bitmap newBit = Bitmap   
    	                        .createScaledBitmap(bitmap, 100, 80, true);   
    	                v.setImageBitmap(newBit);   
    	            } catch (NumberFormatException nfe) {   
    	                v.setImageURI(Uri.parse(value));   
    	            }   
    	        }   
    	    }   
    	    
    	    
    	     
    	    //整理缩略图的uri转成file并归类
    	    public String getFileByImageId(int image_id){
    	    	
    	    	String path = "";
               
                Log.i(TAG, "---(^o^)----" + image_id);   
                String[] projection = { Media._ID, Media.DATA };   
                Cursor cursor2 = cr.query(Media.EXTERNAL_CONTENT_URI, projection,   
                        Media._ID + "=" + image_id, null, null);   
                if (cursor2 != null) {   
                    cursor2.moveToFirst();   
                     path = cursor2.getString(cursor2   
                            .getColumnIndex(Media.DATA));   
                     Log.i("path:", path);
                } else {   
                    Toast.makeText(MainActivity.this, "Image doesn't exist!",   
                            Toast.LENGTH_SHORT).show();   
                }     
    	    	
    	    	return path;
    	    }
    }
    

      

  • 相关阅读:
    学习java随笔第五篇:流程控制
    学习java随笔第四篇:运算符
    学习java随笔第三篇:java的基本数据类型
    知识精简
    性能优化(详细)
    2,8,10,16进制转换
    前端优化35例
    性能优化
    字面量自定义事件

  • 原文地址:https://www.cnblogs.com/andgoo/p/2589633.html
Copyright © 2011-2022 走看看