Android 关于GridView 以及图片处理一些知识


Android 关于GridView控件的处理

本人一直以为做一般的Android应用开发,其中创意也就是有好的Idea是至关重要的,其次是要有解决一般问题的想法,如如何实现一个应用兼容多种屏幕分辨率的问题(即使android对于图片的处理,默认情况先是自适应的,即等比例或缩放图片),如何自己实现网络图片的分段下载,如何实现不同Activity之间的数据传递问题,当Listview中数据量过大时,如何实现数据的分批下载等问题。结果上周去参加了一个面试,呜呜---,让当场编写一个GridView实现手机SDcard内置图片的Thumb nail以及图片的修剪也翻转问题。以前都是现用现查文档或者帮助的,以至于当时傻眼了,控件都不知道怎么用,哎,离开了网络感觉什么都干不了啊,今天下午有些闲暇就整理了一个应用,实现其功能。先看下源代码实现了对图片的Thumbnails功能:

  1. package com.daisy.android.components;   
  2.   
  3. import java.io.File;   
  4. import java.util.ArrayList;   
  5. import java.util.HashMap;   
  6. import java.util.List;   
  7. import java.util.Map;   
  8.   
  9. import android.app.Activity;   
  10. import android.content.Context;   
  11. import android.content.Intent;   
  12. import android.graphics.Bitmap;   
  13. import android.graphics.BitmapFactory;   
  14. import android.net.Uri;   
  15. import android.os.Bundle;   
  16. import android.util.Log;   
  17. import android.view.View;   
  18. import android.widget.AdapterView;   
  19. import android.widget.GridView;   
  20. import android.widget.ImageView;   
  21. import android.widget.ListAdapter;   
  22. import android.widget.SimpleAdapter;   
  23. import android.widget.AdapterView.OnItemClickListener;   
  24.   
  25. public class GridViewActivity extends Activity {   
  26.     public static String TAG = "Grid_view";   
  27.     private GridView gridView;   
  28.     private ArrayList<HashMap<String, String>> list;   
  29.   
  30.     /** Called when the activity is first created. */  
  31.     @Override  
  32.     public void onCreate(Bundle savedInstanceState) {   
  33.         super.onCreate(savedInstanceState);   
  34.         setContentView(R.layout.main);   
  35.         findView();   
  36.     }   
  37.   
  38.     private void findView() {   
  39.         gridView = (GridView) findViewById(R.id.gridview);   
  40.         list = new ArrayList();   
  41.         filepath("/sdcard");   
  42.         // test the contents in the list   
  43.         for (int i = 0; i < list.size(); i++) {   
  44.             Log.i(TAG, list.get(i).get("path") + "-----");   
  45.         }   
  46.         String[] from = { "path" };   
  47.         int[] to = { R.id.imageView };   
  48.         ListAdapter adapter = new GridAdapter(this, list, R.layout.item, from,   
  49.                 to);   
  50.         gridView.setAdapter(adapter);   
  51.         gridView.setOnItemClickListener(listener);   
  52.     }   
  53.   
  54.     OnItemClickListener listener = new OnItemClickListener() {   
  55.   
  56.         @Override  
  57.         public void onItemClick(AdapterView<?> parent, View view, int position,   
  58.                 long id) {   
  59.             // TODO Auto-generated method stub   
  60.             String imagePath = list.get(position).get("path");   
  61.             Intent intent = new Intent(GridViewActivity.this, ImageViewer.class);   
  62.             intent.putExtra("path", imagePath);   
  63.             startActivity(intent);   
  64.         }   
  65.     };   
  66.   
  67.     public void filepath(String str) {   
  68.         Log.i(TAG, str + "---path---");   
  69.         File file = new File(str);   
  70.         if (file.isDirectory()) {   
  71.             String[] filePath = file.list();   
  72.             for (String path : filePath) {   
  73.                 file = new File(str + "/" + path);   
  74.                 if (file.isDirectory() && !path.equals("DCIM")) {   
  75.                     filepath(str + "/" + path);   
  76.                 } else if (path.endsWith(".jpg")) {   
  77.                     HashMap hash = new HashMap();   
  78.                     hash.put("path", str + "/" + path);   
  79.                     list.add(hash);   
  80.                 }   
  81.             }   
  82.         }   
  83.     }   
  84.   
  85.     class GridAdapter extends SimpleAdapter {   
  86.   
  87.         public GridAdapter(Context context,   
  88.                 List<? extends Map<String, ?>> data, int resource,   
  89.                 String[] from, int[] to) {   
  90.             super(context, data, resource, from, to);   
  91.             // TODO Auto-generated constructor stub   
  92.         }   
  93.   
  94.         // set the imageView using the path of image   
  95.         public void setViewImage(ImageView v, String value) {   
  96.             try {   
  97.                 Bitmap bitmap = BitmapFactory.decodeFile(value);   
  98.                 Bitmap newBit = Bitmap   
  99.                         .createScaledBitmap(bitmap, 10080true);   
  100.                 v.setImageBitmap(newBit);   
  101.             } catch (NumberFormatException nfe) {   
  102.                 v.setImageURI(Uri.parse(value));   
  103.             }   
  104.         }   
  105.     }   
  106.   
  107. }  
  • 1
  • 2
  • 下一页

相关内容