zoukankan      html  css  js  c++  java
  • Android中Gallery显示手机中的图片

    在网上找了好久似乎都没有关于这方面的(可能是自己的信息量太小吧),于是自己来填补这个漏洞吧。

    常见的方法莫过于自己定义一个数组,用以存储图片的引用,如:

     

    1 private Integer[] pictures = { 
    2         R.drawable.icon1, 
    3         R.drawable.icon2, 
    4         R.drawable.icon3, 
    5         R.drawable.icon4, 
    6         R.drawable.icon5 
    7 };

    然后再将此数组加入到适配器中。但是想要显示自己的图片,这怎么行。。下面来介绍我自己的方法

     


    首先,你得知道你图片的存储路径,将这些你将要显示的图片的路径存放于一个arraylist里面

     

    1 ArrayList<String> PictureNameList = new ArrayList<String>();
    2          PicureNameList.add("路径");
    3                  ...
    4                  ...

    然后获取gallery实例,

     

     

    1 Gallery g = (Gallery) findViewById(R.id.mygallery);

    相应的mygallery.xml

     

     

    01 <?xml version="1.0" encoding="utf-8"?>
    02 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    03     android:layout_width="fill_parent"
    04     android:layout_height="fill_parent"
    05     android:orientation="vertical"
    06 >
    07  
    08   <!-- 建立一個  Gallery -->
    09   <Gallery 
    10   android:id="@+id/mygallery"
    11   android:layout_width="fill_parent"
    12   android:layout_height="wrap_content"
    13   android:layout_x="12px"
    14   android:layout_y="106px" 
    15   />
    16    
    17    
    18 </LinearLayout>

     

    并加入到适配器里面

     

    01 g.setAdapter(new ImageAdapter(this,PictureNameList));
    02  
    03         /*设定一个itemclickListener事件*/
    04         g.setOnItemClickListener(new OnItemClickListener()
    05         {
    06           public void onItemClick(AdapterView<?> parent,
    07                            View v, int position, long id)
    08           {
    09  
    10            //这里就根据你自己的需要去做一些功能的展示
    11           }
    12         });

    下面就来看这个ImageAdaper实现

     

     

    01 public class ImageAdapter extends BaseAdapter
    02     {
    03       /*声明变量*/
    04       int mGalleryItemBackground;
    05       private Context mContext;
    06       private List<String> lis;
    07        
    08       /*ImageAdapter的构造符*/
    09       public ImageAdapter(Context c,List<String> li)
    10       {
    11         mContext = c;
    12         lis=li;
    13         /* 使用res/values/attrs.xml中的<declare-styleable>定义
    14         * 的Gallery属性.*/
    15         TypedArray a = obtainStyledAttributes(R.styleable.Gallery);
    16         /*取得Gallery属性的Index id*/
    17         mGalleryItemBackground = a.getResourceId(
    18             R.styleable.Gallery_android_galleryItemBackground, 0);
    19         /*让对象的styleable属性能够反复使用*/
    20         a.recycle();
    21       }
    22        
    23       /*几定要重写的方法getCount,传回图片数目*/
    24       public int getCount()
    25       {
    26         return lis.size();
    27       }
    28        
    29       /*一定要重写的方法getItem,传回position*/
    30       public Object getItem(int position)
    31       {
    32         return position;
    33       }
    34        
    35       /*一定要重写的方法getItemId,传并position*/
    36       public long getItemId(int position)
    37       {
    38         return position;
    39       }
    40        
    41       /*几定要重写的方法getView,传并几View对象*/
    42       public View getView(int position, View convertView,
    43                             ViewGroup parent)
    44       {
    45         /*产生ImageView对象*/
    46         ImageView i = new ImageView(mContext);
    47         /*设定图片给imageView对象*/
    48         Bitmap bm = BitmapFactory.decodeFile(lis.
    49                               get(position).toString());
    50         i.setImageBitmap(bm);
    51         /*重新设定图片的宽高*/
    52         i.setScaleType(ImageView.ScaleType.FIT_XY);
    53         /*重新设定Layout的宽高*/
    54         i.setLayoutParams(new Gallery.LayoutParams(200, 120));
    55         /*设定Gallery背景图*/
    56         i.setBackgroundResource(mGalleryItemBackground);
    57         /*传回imageView对象*/
    58         return i;
    59       }    
    60     }
    61   }

     

    其中只需要关注最后一个getView函数,这个函数的关键就在于其中两行

     

    1 Bitmap bm = BitmapFactory.decodeFile(lis.
    2                               get(position).toString());
    3         i.setImageBitmap(bm);

    获取图片并显示图片。ok!

     

    记得在values文件下里面添加一个叫做attrs.xml的文件

     

    1 <?xml version="1.0" encoding="utf-8"?>
    2 <resources>
    3   <declare-styleable name="Gallery">
    4     <attr name="android:galleryItemBackground" />
    5   </declare-styleable>
    6 </resources>

    最后还要记得在配置文件中添加权限

     

     

    1 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    2     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

     



    源码下载


  • 相关阅读:
    matlab关闭文件
    matlab字符串比较
    matlab画直线
    已解决:TeamViewer使用的设备数量上限
    ubuntu安装teamviewer,缺少依赖处理
    木心的话
    SQL 语句中 where 条件后 写上1=1 是什么意思
    NetCore获取当前请求URL的方法
    NetCore3.1 日志组件 Nlog的使用
    Mysql并发时经典常见的死锁原因及解决方法
  • 原文地址:https://www.cnblogs.com/riskyer/p/3331376.html
Copyright © 2011-2022 走看看