首页 > 代码库 > 如何实现带照片缩略图的Listview
如何实现带照片缩略图的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 @Override101 public int getCount() {102 // TODO Auto-generated method stub103 return pictureList.size();104 }105 @Override106 public Object getItem(int p) {107 // TODO Auto-generated method stub108 return pictureList.get(p);109 }110 @Override111 public long getItemId(int p) {112 // TODO Auto-generated method stub113 return p;114 }115 @Override116 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 }
如何实现带照片缩略图的Listview
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。