• 如何实现带照片缩略图的Listview


      1 ackage com.demo;
      2  
      3 import java.util.ArrayList;
      4  
      5 import android.app.Activity;
      6 import android.content.Context;
      7 import android.database.Cursor;
      8 import android.graphics.Bitmap;
      9 import android.graphics.BitmapFactory;
     10 import android.os.Bundle;
     11 import android.provider.MediaStore;
     12 import android.provider.MediaStore.Images;
     13 import android.view.LayoutInflater;
     14 import android.view.View;
     15 import android.view.ViewGroup;
     16 import android.widget.BaseAdapter;
     17 import android.widget.ImageView;
     18 import android.widget.ListView;
     19 import android.widget.TextView;
     20  
     21 public class PictureActivity extends Activity{ 
     22     private ListView picturefiles = null;
     23     private Cursor cursor;
     24     private ArrayList<PictureInfo> pictureList = new ArrayList<PictureActivity.PictureInfo>();
     25      
     26     private static final String[] STORE_IMAGES = {
     27         MediaStore.Images.Media.DATA,
     28         MediaStore.Images.Media.MIME_TYPE,
     29         MediaStore.Images.Media.DISPLAY_NAME,
     30         MediaStore.Images.Media._ID
     31     };
     32      
     33     /** Called when the activity is first created. */
     34     @Override
     35     public void onCreate(Bundle savedInstanceState) {
     36         super.onCreate(savedInstanceState);
     37         setContentView(R.layout.picture);
     38         showimage();
     39         // 单击显示图片
     40         //picturefiles.setOnItemClickListener(new ShowItemImageOnClickListener());
     41     }
     42      
     43     public void showimage(){
     44         picturefiles = (ListView)findViewById(R.id.picture_list);
     45         cursor = this.managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, STORE_IMAGES, null, null, null);
     46         while(cursor.moveToNext()){
     47             PictureInfo info = new PictureInfo();
     48              
     49             info.filePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
     50             info.mimeType = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.MIME_TYPE));
     51             info.title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DISPLAY_NAME));
     52              
     53             //获取当前Picture对应的Id,然后根据该ID获取其Thumb
     54             int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID));
     55             /*if(info.bitmap!=null&&!info.bitmap.isRecycled())
     56             {
     57                 info.bitmap.recycle();
     58             }*/
     59             BitmapFactory.Options options=new BitmapFactory.Options();
     60             options.inDither=false;
     61             options.inPreferredConfig=Bitmap.Config.RGB_565;
     62             info.bitmap=MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), id,  Images.Thumbnails.MICRO_KIND, options); 
     63             //然后将其加入到pictureList
     64             pictureList.add(info);
     65         }
     66         System.out.println(pictureList.size());
     67         //然后需要设置ListView的Adapter了,使用我们自定义的Adatper
     68         PictureAdapter adapter = new PictureAdapter(this);
     69         picturefiles=(ListView)findViewById(R.id.picture_list);
     70         picturefiles.setAdapter(adapter);
     71     }
     72      
     73     class PictureInfo{
     74         String filePath;
     75         String mimeType;
     76         Bitmap bitmap;
     77         String title;
     78     }
     79      
     80     class ViewHolder{
     81         ImageView thumbImage;
     82         TextView titleText;
     83     }
     84      
     85     /**
     86      * 定义一个Adapter来显示缩略图和视频title信息
     87      * @author Administrator
     88      *
     89      */
     90     private class PictureAdapter extends BaseAdapter{
     91          
     92         private Context mContext;
     93         private LayoutInflater inflater;
     94          
     95         public PictureAdapter(Context context){
     96             this.mContext = context;
     97             this.inflater = LayoutInflater.from(context); 
     98             this.inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
     99         }
    100         @Override
    101         public int getCount() {
    102             // TODO Auto-generated method stub
    103             return pictureList.size();
    104         }
    105         @Override
    106         public Object getItem(int p) {
    107             // TODO Auto-generated method stub
    108             return pictureList.get(p);
    109         }
    110         @Override
    111         public long getItemId(int p) {
    112             // TODO Auto-generated method stub
    113             return p;
    114         }
    115         @Override
    116         public View getView(int position, View convertView, ViewGroup parent) {
    117             ViewHolder holder ;
    118             if(convertView == null){
    119                 holder = new ViewHolder();
    120                 convertView = inflater.inflate(R.layout.line, null);
    121                 holder.thumbImage = (ImageView)convertView.findViewById(R.id.icon);
    122                 holder.titleText = (TextView)convertView.findViewById(R.id.file_name);
    123                 convertView.setTag(holder);
    124             }else{
    125                 holder = (ViewHolder)convertView.getTag();
    126             }
    127              
    128             //显示信息
    129             holder.titleText.setText(pictureList.get(position).title);
    130             if(pictureList.get(position).bitmap != null){
    131                 holder.thumbImage.setImageBitmap(pictureList.get(position).bitmap);
    132             }
    133             return convertView;
    134         }       
    135     }
    136 }
  • 相关阅读:
    31天重构学习笔记21. 合并继承
    31天重构学习笔记15. 移除重复内容
    31天重构学习笔记22. 分解方法
    31天重构学习笔记18. 使用条件判断代替异常
    31天重构学习笔记19. 提取工厂类
    31天重构学习笔记24. 分解复杂判断
    31天重构学习笔记17. 提取父类
    大型项目的发布部署:第一章:发布部署流程
    HDU 2036 改革春风吹满地 数学题
    HDU 2051 Bitset
  • 原文地址:https://www.cnblogs.com/dongweiq/p/4112620.html
Copyright © 2020-2023  润新知