歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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. }  
Copyright © Linux教程網 All Rights Reserved