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

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

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" />

源码下载

Android中Gallery显示手机中的图片的更多相关文章

  1. 页面中直接显示FTP中的图片

    页面中直接显示FTP中的图片 FTP根目录下有一张图片,如下 第一步: 通过如下格式,在浏览器上输入路径,确定可看到图片 ftp://root:root@127.0.0.1/111.png ftp:/ ...

  2. Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/1873 ...

  3. Android GridView 一行显示数据(包括图片和文本),解决的办法是计算数据占该行的宽度是多少

    最近在做图片的浏览功能,开始是使用Gallery做,但是,达不到我想要的效果,关于使用Gallery显示缩略图的缺点和优点,不在详述了.以下是一个完整的Demo代码,注意我的模拟器是640*960. ...

  4. Android总结之打开手机相册获取图片

    上一篇,总结了如何打开照相机获取图片,详情请看>>>> 这篇将总结如何打开手机存储(相册)来获取手机上的图片. 打开相册 在需要这个功能的类中,我们可以自定义一个方法openA ...

  5. android高仿微信UI点击头像显示大图片效果, Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

    http://www.cnblogs.com/Jaylong/archive/2012/09/27/androidUI.html http://blog.csdn.net/xiaanming/arti ...

  6. appium 【已解决】Android,每次启动手机中都会安装Appium settings和Unclock的方法

    环境介绍: 1.appium版本:1.4.16.1 2.真机运行 实现结果: 运行appium第一次运行则安装Appium settings和Unclock的apk,再次之后的运行则无需手动卸载,再次 ...

  7. 怎样扩展EasyUI在页面中马上显示选中的本地图片

    在编写前台页面的时候,有时须要将选中的图片夹杂着其它信息一起上传到服务端,在选着本地图片的时候,为了获得更好的效果,须要将该图片显示在页面上. 最初思路有两个.详细例如以下: 1.获取选中文件的二进制 ...

  8. Android 推断程序在手机中是否是活动状态或者正在执行状态

    沈阳斌子在今天项目需求上碰到个这种问题,在Service中须要推断当前的程序是否是活动状态,换句话说也就是说后台跑的服务中有业务需求检測当前程序是否是该服务的程序 这样好让点击推送通知时跳转到不同的页 ...

  9. C#中 分层 显示数据库中多表的数据信息

    如下图,要实现将三个表中的内容加载到同一个窗体中,该怎么来实现呢? 要实现上面的查询结果,我们就要从Student表中拿到学生姓名,从Subject表中拿到科目名称,从StudentResult表中拿 ...

随机推荐

  1. Gradle方式构建Java多项目

    0: 安装IDEA:Linux 上只需下载IDEA的包 并且将路径配置在PATH全局变量中./etc/profile export PATH=$PATH:/opt/Software/IDEA/idea ...

  2. Nginx 变量漫谈(四)

    在设置了“取处理程序”的情况下,Nginx 变量也可以选择将其值容器用作缓存,这样在多次读取变量的时候,就只需要调用“取处理程序”计算一次.我们下面就来看一个这样的例子:     map $args  ...

  3. gl.TexSubImage2D 使用遇到图片翻转的问题

    这2天在用gl.TexSubImage2D把几张小图转拼接成大图,如果在渲染物体之前拼接好就没有问题,但在开始渲染物体后拼接就会有问题.后来我做了2件事情来找原因, 1. 用拼好的图来画一个正方形,大 ...

  4. 【深夜急报,Win10下的Linux子系统之Bash】

    [在Windows下进行的编程人员,你真的需要学习下Linux] 手册:<Linux 命令手册(特洛伊版2.0)> 链接: https://pan.baidu.com/s/1skrVSvV ...

  5. Linux进程间通信——使用流套接字

    前面说到的进程间的通信,所通信的进程都是在同一台计算机上的,而使用socket进行通信的进程可以是同一台计算机的进程,也是可以是通过网络连接起来的不同计算机上的进程.通常我们使用socket进行网络编 ...

  6. hdu 1010 Tempter of the Bone 深搜+剪枝

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  7. 杭电oj 2719

    Tips:本程序没有什么难度,只要按照逻辑进行替换即可,需要注意的是,由于输入串中含有空格符号,所以不能使用scanf("%s",ch);来读取一串,可以使用gets()函数读取一 ...

  8. hdu 5621 KK's Point(数学,推理题)

    题解: 在圆上点三个点时,除圆上三个交点外,圆内没有交点:在圆上点四个点时,除圆上四个交点外,圆内出现了一个交点,因此,在N个点中每四个点便可以在圆内产生一个交点,因此N个点在圆内形成的点的个数为CN ...

  9. android分割线

    http://blog.csdn.net/dekunchenivan/article/details/6640804 在Android布局文件layout中设置水平分割线: <View      ...

  10. 要删除共享的初始登陆名 cmd下输入net use * /delete

    要删除共享的初始登陆名 cmd下输入net use *  /delete