EX07_05.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:4k
源码类别:

android开发

开发平台:

Java

  1. package irdc.ex07_05;
  2. import java.io.File;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import android.app.Activity;
  6. import android.content.Context;
  7. import android.content.res.TypedArray;
  8. import android.graphics.Bitmap;
  9. import android.graphics.BitmapFactory;
  10. import android.os.Bundle;
  11. import android.view.View;
  12. import android.view.ViewGroup;
  13. import android.widget.AdapterView;
  14. import android.widget.BaseAdapter;
  15. import android.widget.Gallery;
  16. import android.widget.ImageView;
  17. import android.widget.AdapterView.OnItemClickListener;
  18. public class EX07_05 extends Activity 
  19. {
  20.   
  21.   /** Called when the activity is first created. */
  22.   @Override
  23.   public void onCreate(Bundle savedInstanceState)
  24.   {
  25.     super.onCreate(savedInstanceState);
  26.     setContentView(R.layout.main);   
  27.     Gallery g = (Gallery) findViewById(R.id.mygallery);
  28.             
  29.     /*添加一ImageAdapter并设置给Gallery对象*/
  30.     g.setAdapter(new ImageAdapter(this,getSD()));
  31.     /*设置一个itemclickListener事件*/
  32.     g.setOnItemClickListener(new OnItemClickListener() 
  33.     {
  34.       public void onItemClick(AdapterView<?> parent, 
  35.                        View v, int position, long id) 
  36.       { 
  37.         
  38.       }
  39.     });
  40.   }
  41.   
  42.   private List<String> getSD()
  43.   {
  44.     /* 设置目前所在路径 */
  45.     List<String> it=new ArrayList<String>();      
  46.     File f=new File("/sdcard/");  
  47.     File[] files=f.listFiles();
  48.  
  49.     /* 将所有文件添加ArrayList中 */
  50.     for(int i=0;i<files.length;i++)
  51.     {
  52.       File file=files[i];
  53.       if(getImageFile(file.getPath()))
  54.         it.add(file.getPath());
  55.     }
  56.     return it;
  57.   }
  58.     
  59.   private boolean getImageFile(String fName)
  60.   {
  61.     boolean re;
  62.     
  63.     /* 取得扩展名 */
  64.     String end=fName.substring(fName.lastIndexOf(".")+1,
  65.                   fName.length()).toLowerCase(); 
  66.     
  67.     /* 依附档名的类型决定MimeType */
  68.     if(end.equals("jpg")||end.equals("gif")||end.equals("png")
  69.             ||end.equals("jpeg")||end.equals("bmp"))
  70.     {
  71.       re=true;
  72.     }
  73.     else
  74.     {
  75.       re=false;
  76.     }
  77.     return re; 
  78.   }
  79.   /*改写BaseAdapter自定义一ImageAdapter class*/
  80.   public class ImageAdapter extends BaseAdapter
  81.   {
  82.     /*声明变量*/
  83.     int mGalleryItemBackground;
  84.     private Context mContext;
  85.     private List<String> lis;
  86.     
  87.     /*ImageAdapter的构造器*/
  88.     public ImageAdapter(Context c,List<String> li)
  89.     {
  90.       mContext = c;
  91.       lis=li;
  92.       /* 使用在res/values/attrs.xml中的<declare-styleable>定义
  93.       * 的Gallery属性.*/
  94.       TypedArray a = obtainStyledAttributes(R.styleable.Gallery);
  95.       /*取得Gallery属性的Index id*/
  96.       mGalleryItemBackground = a.getResourceId(
  97.           R.styleable.Gallery_android_galleryItemBackground, 0);
  98.       /*让对象的styleable属性能够反复使用*/ 
  99.       a.recycle();
  100.     }
  101.     
  102.     /* 覆盖的方法getCount,返回图片数目*/
  103.     public int getCount() 
  104.     {
  105.       return lis.size();
  106.     }
  107.     
  108.     /* 覆盖的方法getItem,返回position*/
  109.     public Object getItem(int position) 
  110.     {
  111.       return position;
  112.     }
  113.     
  114.     /*一定要覆盖的方法getItemId,返回position*/
  115.     public long getItemId(int position) 
  116.     {
  117.       return position;
  118.     }
  119.     
  120.     /* 覆盖的方法getView,返回一View对象*/
  121.     public View getView(int position, View convertView, 
  122.                           ViewGroup parent) 
  123.     {
  124.       /*产生ImageView对象*/
  125.       ImageView i = new ImageView(mContext);
  126.       /*设置图片给imageView对象*/
  127.       Bitmap bm = BitmapFactory.decodeFile(lis.
  128.                             get(position).toString());
  129.       i.setImageBitmap(bm);
  130.       /*重新设置图片的宽高*/
  131.       i.setScaleType(ImageView.ScaleType.FIT_XY);
  132.       /*重新设置Layout的宽高*/
  133.       i.setLayoutParams(new Gallery.LayoutParams(136, 88));
  134.       /*设置Gallery背景图*/
  135.       i.setBackgroundResource(mGalleryItemBackground);
  136.       /*返回imageView对象*/
  137.       return i;
  138.     }     
  139.   } 
  140. }