首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

ListView方式预览图片

2012-08-16 
ListView形式预览图片??public class Main extends Activity implements OnItemClickListener {private Li

ListView形式预览图片


ListView方式预览图片

?


?

public class Main extends Activity implements OnItemClickListener {private ListView listView;// 装载缩小的图片private ImageAdapter imageAdapter;public static int imagePosition;// 图片的下标public static Uri[] imageUri;// 图片的URLpublic static List<String> imagePaths;// 存放图片路径的Listpublic String fileName[];Bitmap bitmap = null;// 原位图Bitmap smallbitmap = null;// 缩小的位图public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);setTitle("相册浏览——ListView");setTitleColor(Color.YELLOW);setContentView(R.layout.main);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setProgressBarIndeterminateVisibility(true);// 显示标题栏的进度圈initView();// 初始化final Object data = getLastNonConfigurationInstance();// 得到横屏时临时存储的数据if (data == null) {// 为空重新加载new getImagesFromSD().execute();} else {final LoadedImage[] photos = (LoadedImage[]) data;if (photos.length == 0) {new getImagesFromSD().execute();}for (LoadedImage photo : photos) {addImage(photo);}}}// 初始化private void initView() {imagePaths = Utils.getImagePathFromSDCard();// 获得图片路径listView = (ListView) findViewById(R.id.test_lv);imageAdapter = new ImageAdapter(getApplicationContext());listView.setAdapter(imageAdapter);}private void addImage(LoadedImage... value) {for (LoadedImage image : value) {imageAdapter.addPhoto(image);// 把图片添加到适配器里面,以便调整图片的属性imageAdapter.notifyDataSetChanged();}}// 读取sdcard上的图片class getImagesFromSD extends AsyncTask<Object, LoadedImage, Object> {protected Object doInBackground(Object... params) {imageUri = new Uri[imagePaths.size()];// 声明imageUri的长度for (int i = 0; i < imagePaths.size(); i++) {String path = imagePaths.get(i);BitmapFactory.Options options = new BitmapFactory.Options();options.inSampleSize = 5;bitmap = BitmapFactory.decodeFile(path, options);if (bitmap != null) {smallbitmap = Bitmap.createScaledBitmap(bitmap, 60, 60,true);// 将原来的位图缩小bitmap.recycle();// 释放内存if (smallbitmap != null) {publishProgress(new LoadedImage(smallbitmap));}}}return null;}@Overridepublic void onProgressUpdate(LoadedImage... value) {addImage(value);}// 当加载完时停止标题栏的进度圈@Overrideprotected void onPostExecute(Object result) {setProgressBarIndeterminateVisibility(false);}}// 自定义图片适配器class ImageAdapter extends BaseAdapter {private Context mContext;private ArrayList<LoadedImage> photos = new ArrayList<LoadedImage>();public ImageAdapter(Context context) {mContext = context;}public void addPhoto(LoadedImage photo) {// 把图片添加到数组photos.add(photo);}public int getCount() {// 得到图片数量return photos.size();}public Object getItem(int position) {return photos.get(position);}public long getItemId(int position) {return position;}public View getView(int position, View convertView, ViewGroup parent) {LinearLayout linearLayout = new LinearLayout(mContext);// 创建LinearLayoutlinearLayout.setOrientation(LinearLayout.HORIZONTAL);linearLayout.setPadding(10, 2, 2, 2);linearLayout.setGravity(Gravity.LEFT);ImageView imageView = new ImageView(mContext); // 创建ImageViewimageView.setAdjustViewBounds(true);imageView.setScaleType(ImageView.ScaleType.CENTER);imageView.setPadding(2, 2, 2, 2);// 控制图片距离窗口的位置imageView.setImageBitmap(photos.get(position).getBitmap());TextView textView = new TextView(mContext);// 创建TextextViewiewtextView.setPadding(10, 2, 2, 2);textView.setTextSize(17);textView.setTextColor(Color.YELLOW);textView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));textView.setText(Utils.getName(imagePaths.get(position))); // 设置TextextViewiew显示的内容linearLayout.addView(imageView); // 将ImageView添加到线性布局中linearLayout.addView(textView);// 将textView添加到线性布局中return linearLayout;}}// 加载图片private static class LoadedImage {Bitmap mBitmap;LoadedImage(Bitmap bitmap) {mBitmap = bitmap;}public Bitmap getBitmap() {return mBitmap;}}// 图片点击监听public void onItemClick(AdapterView<?> parent, View v, int position, long id) {imagePosition = position;// 把图片位置赋给静态变量imagePosition,方便后面调用// Intent intent = new Intent(Main.this, GalleryImage.class);// 跳转到大图浏览// startActivity(intent);}}

?

热点排行