Gallery画廊式控件,如图所示,但是在API level 16,也即Android 4.1,被deprecated,可以使用HorizontableScroolView和ViewPager。但是后来者都不是AdapterView,所有我们仍快速地略过Gallery,也顺带学习一下SimpleAdapter。

XML layout文件如下:

<?xml version="1.0" encoding="utf-8"?> 
<Gallery xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ui_gallery" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    />

对于子view,有预置android.R.layout.simple_gallery_item,但那是TextView,不符合我们的要求,我们需要的是ImageView,故自行设置子view的布局,ui_imageitem.xml文件如下:

<?xml version="1.0" encoding="utf-8"?> 
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ui_imageItem" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:ellipsize="marquee" />   <!-- 当字符内容太长显示不下时可以省略号代替未显示的字符;省略号可以在显示区域的起始,中间,结束位置,或者以跑马灯的方式显示文字,截图显示的就是marquee方式。  -->

SimpleAdapter经常用于静态资源。适合用于gallery。下面的Java代码:

public class UiGalleryTest extends Activity{ 
    /* int[] pics对应我们在res/drawable/下的图片资源,picsName对应他们的key,我们在此特地将第二个资源的key设为不一样。在最后的结果重,我们可以看到第二章图片没有在gallery中显示 */
    private int[] pics = {R.drawable.sunflower01, R.drawable.sky01,R.drawable.sky02};
    private String[] picsName = {"image","image1","image"}; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.ui_gallery);          
        @SuppressWarnings("deprecation") 
        Gallery gallery = (Gallery)findViewById(R.id.ui_gallery);
        //SimpleAdapter的数据源的格式是List<?extends Map<String ?>>,这个格式写法比较特别,它是list of Map,每个entry就是一个数据单位。 
        ArrayList<HashMap<String,Object>> images = new ArrayList<HashMap<String,Object>>();
        for(int i = 0 ; i < pics.length; i ++){ 
            HashMap<String,Object> one = new HashMap<String, Object>();  
            one.put(picsName[i], Integer.valueOf(pics[i])); 
            images.add(one);  
        }  
        //SimpleAdapter和其他的adapter差不多,参数很容易理解                 
        SimpleAdapter adapter = new SimpleAdapter(this /*context*/, images /*数据源*/,  
               R.layout.ui_imageitem,  /* 子View的layout,有预置android.R.layout.simple_gallery_item,但那是TextView,不符合我们的要求 */ 
               new String[]{"image"},  // 从Map中选取数据,本例即哪个key,我们选取“image”,故不显示第二个图
               new int[]{R.id.ui_imageItem}); //子view中控件ID
        gallery.setAdapter(adapter); 
    } 
}

相关链接: 我的Android开发相关文章

【转】 Pro Android学习笔记(二一):用户界面和控制(9):Gallery和SimpleAdapter的更多相关文章

  1. 【转】 Pro Android学习笔记(二二):用户界面和控制(10):自定义Adapter

    目录(?)[-] 设计Adapter的布局 代码部分 Activity的代码 MyAdapter的代码数据源和构造函数 MyAdapter的代码实现自定义的adapter MyAdapter的代码继续 ...

  2. 【转】Pro Android学习笔记(二五):用户界面和控制(13):LinearLayout和TableLayout

    目录(?)[-] 布局Layout 线性布局LinearLayout 表格布局TableLayout 布局Layout Layout是容器,用于对所包含的view进行布局.layout是view的子类 ...

  3. 【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge

    目录(?)[-] xml控件代码重用include xml控件代码重用merge 横屏和竖屏landsacpe portrait xml控件代码重用:include 如果我们定义一个控件,需要在不同的 ...

  4. 【转】 Pro Android学习笔记(五二):ActionBar(5):list模式

    可以在action bar中加入spinner的下来菜单,有关spinner,可以参考Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner. list的样式和 ...

  5. 【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView

    目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只 ...

  6. 【转】 Pro Android学习笔记(八二):了解Package(1):包和进程

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在之前,我们已经学习了如何签发apk,见P ...

  7. 【转】 Pro Android学习笔记(四二):Fragment(7):切换效果

    目录(?)[-] 利用setTransition 利用setCustomAnimations 通过ObjectAnimator自定义动态效果 程序代码的编写 利用fragment transactio ...

  8. 【转】Pro Android学习笔记(三十):Menu(1):了解Menu

    目录(?)[-] 创建Menu MenuItem的属性itemId MenuItem的属性groupId MenuItem的属性orderId MenuItem的属性可选属性 Menu触发 onOpt ...

  9. Pro Android学习笔记 ActionBar(1):Home图标区

     Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...

  10. 【转】 Pro Android学习笔记(六七):HTTP服务(1):HTTP GET

    目录(?)[-] HTTP GET小例子 简单小例子 出现异常NetworkOnMainThreadException 通过StrictMode进行处理 URL带键值对 Andriod应用可利用ser ...

随机推荐

  1. Linux安装Nginx使用负载均衡

    1.实验准备准备三台计算机 nginx1 192.168.13.121 作为nginx负载均衡器nginx2 192.168.13.24  web服务,提供一个页面        nginx3 192 ...

  2. python3里面的图片处理库 pillow

    在python2下用pil,而在python3下可以安装pillow 功能,在图片上加上几个字 #coding: utf-8 myPath = "./" fontPath = &q ...

  3. putty screen

    http://www.cnblogs.com/xupeizhi/archive/2013/05/20/3088779.html screen 会创建一个跑着shell的单一窗口 Ctrl+a d退出刚 ...

  4. 配置asp.net IIS服务器遇到的问题以及详细图例解决方案

    原来配置过IIS服务,但是没有将自己的程序放在IIS服务器上,今天突发奇想,看看自己写的程序怎么样啊,能否在服务器上运行一下,说干就干,但是遇到了很多困难,今天把陪孩子过程以及遇到的问题给大家说说,希 ...

  5. 左侧图片 右侧块的实现方法---解决3像素bug的一种解决方案,不用浮动用绝对定位和margin-left

    google的实现方式是: <div class="mw"> <a href="/" id="mlogo">  &l ...

  6. F5与Ctrl+F5及地址栏输入地址回车

    按F5等同于点击页面地址栏的刷新图标. 地址栏输入地址然后回车: 根据缓存内容是否过期决定是否发送请求给服务端 F5: 浏览器无论如何都得发送请求给服务端,包含If-Modified-Since/If ...

  7. 登陆获取shell时的配置文件加载过程

    最近遇到一台ubuntu服务器登陆时默认语言环境变量变成posix问题, 导致中文显示乱码,影响程序的正常运行 # locale LANG= LANGUAGE= LC_CTYPE="POSI ...

  8. java:Map借口及其子类HashMap五,identityHashMap子类

    java:Map借口及其子类HashMap五,identityHashMap子类 了解:identityHashMap子类 一般情况下,标准的Map,是不会有重复的key值得value的,相同的key ...

  9. winform 添加帮助按钮

    1. 添加提示信息 新建个窗体项目,项目名称为WinFormUI,解决方案名称为WinFormWithHelpDoc.删除默认创建的Form1,新建窗体MainForm,设置相关属性.我们要完成的效果 ...

  10. php 数据处理--合并,拆分,追加,去重

    1. 合并数组 array_merge()函数将数组合并到一起,返回一个联合的数组.所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加. 示例代码: <?php $arr = ...