StackView也是AdapterViewAnimator的子类,它也用于显示Adapter提供的系列View。SackView将会以“堆叠(Stack)”方式来显示多个列表项。

为了控制StackView显示的View组件,StackView提供了如下两种控制方式。

  • 拖走StackView中处于顶端的View,下一个View将会显示出来。将上一个View拖进StackView,将使之显示出来。
  • 通过调用StackView的showNext()、showPrevious()控制显示上一个、下一个组件。

下面的实例示范了StackView的功能和用法。

该实例会使用StackView将照片叠在一起,并允许用户通过拖动或单击按钮来显示上一张、下一张图片。该实例的布局文件如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<StackView android:id="@+id/mStackView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:loopViews="true"/>
<LinearLayout android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="上一个"
android:onClick="prev" />
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下一个"
android:onClick="next" />
</LinearLayout>
</LinearLayout>

上面的布局文件中定义了一个StackView组件,该StackView将会以“叠”的方式显示多个View组件。与所有AdapterView类似的是,只要为StackView设置Adapter即可。

下面Activity将会创建一个SimpleAdapter作为StackView的Adapter,并为布局文件中的两个按钮的onClick事件提供处理方法。下面是该Activity的代码。

package org.crazyit.helloworld;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.*; public class StackViewTest extends Activity {
StackView stackView;
int[] imageIds=new int[]{
R.drawable.bomb5,
R.drawable.bomb6,
R.drawable.bomb7,
R.drawable.bomb8,
R.drawable.bomb9,
R.drawable.bomb10,
R.drawable.bomb11,
R.drawable.bomb12,
R.drawable.bomb13,
R.drawable.bomb14,
R.drawable.bomb15,
R.drawable.bomb16
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.stack_view_test);
stackView=(StackView)findViewById(R.id.mStackView);
//创建一个List对象,List对象的元素是Map
List<Map<String,Object>> listItems=new ArrayList<Map<String,Object>>();
for(int i=0;i<imageIds.length;i++)
{
Map<String,Object> listItem=new HashMap<String,Object>();
listItem.put("image",imageIds[i]);
listItems.add(listItem);
}
//创建一个SimpleAdapter
SimpleAdapter simpleAdapter=new SimpleAdapter(this,listItems,R.layout.cell,
new String[]{"image"},new int
[]{R.id.image1});
stackView.setAdapter(simpleAdapter);
} public void prev(View view)
{
//显示上一个组件
stackView.showPrevious();
} public void next(View view)
{
//显示下一个组件
stackView.showNext();
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.stack_view_test, menu);
return true;
} }

上面的程序中使用了R.layout.cell布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:padding="2pt" >
<ImageView android:id="@+id/image1"
android:layout_width="120dp"
android:layout_height="120dp" /> </LinearLayout>

运行上面的Activity程序将会看到如下效果:

StackView的功能和用法的更多相关文章

  1. Android 自学之画廊视图(Gallery)功能和用法

    Gallery与之前讲的Spinner有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框.他们之间的区别在于Spinner显示的是一个垂直的列表框,而Gallery显 ...

  2. 搜索框(SearchView)的功能与用法

    SearchView是搜索框组件,它可以让用户在文本框内输入汉字,并允许通过监听器监控用户输入,当用户用户输入完成后提交搜索按钮时,也通过监听器执行实际的搜索. 使用SearchView时可以使用如下 ...

  3. 数值选择器(NumberPicker)的功能与用法

    数值选择器用于让用户输入数值,用户既可以通过键盘输入数值,也可以通过拖动来选择数值.使用该组件常用如下三个方法. setMinValue(int minVal):设置该组件支持的最小值. setMax ...

  4. 日历视图(CalendarView)组件的功能和用法

    日历视图(CalendarView)可用于显示和选择日期,用户既可选择一个日期,也可通过触摸来滚动日历.如果希望监控该组件的日历改变,可调用CalendarView的setOnDateChangeLi ...

  5. 星级评分条(RatingBar)的功能和用法

    星级评分条与拖动条有相同的父类:AbsSeekBar,因此它们十分相似.实际上星级评分条与拖动条的用法.功能都十分接近:它们都是允许用户通过拖动条来改变进度.RatingBar与SeekBar最大区别 ...

  6. 拖动条(SeekBar)的功能和用法

    拖动条和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程序,而拖动条则通过滑块的位置来标识数值——而且拖动条允许用户拖动滑块来改变值,因而拖动条通常用于对系统的某种数值进行调节,比如调节音量等 ...

  7. MySQL常用存储引擎功能与用法详解

    本文实例讲述了MySQL常用存储引擎功能与用法. MySQL存储引擎主要有两大类: 1. 事务安全表:InnoDB.BDB. 2. 非事务安全表:MyISAM.MEMORY.MERGE.EXAMPLE ...

  8. MessageDigest的功能及用法(加密解密)

    MessageDigest的功能及用法 MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法.信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度 ...

  9. 星级评分条(RatingBar)的功能与用法

    星级评分条与拖动条有相同的父类:AbsSeekBar,因此它们十分相似.实际上星际评分条与拖动条的用法.功能都十分接近:它们都允许用户通过拖动来改变进度.RatingBar与SeekBar的最大区别在 ...

随机推荐

  1. HDU 1217 Arbitrage(Floyd的应用)

    给出一些国家之间的汇率,看看能否从中发现某些肮脏的......朋友交易. 这是Floyd的应用,dp思想,每次都选取最大值,最后看看自己跟自己的.....交易是否大于一.... #include< ...

  2. iOS 程序间跳转传参(支付和地图)

    两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个AP ...

  3. linux commands ---2 ,学习vim编辑器如何使用的方法。

    vim /data/yst.txt   打开一个文件之后,然后在命令行模式下,输入:help 可以调出 vim 的帮助文档. 然后会进入: 然后就可以查阅具体的帮助文档了,再也不用再网上找一些零散的v ...

  4. /system改成可写

    读写: mount -o remount,rw /dev/block/mtdblock0 /system 只读mount -o remount,ro /dev/block/mtdblock0 /sys ...

  5. STL中map的一个知识点

    问题背景 在做USACO Section 1.1 Greedy Gift Givers的时候,我最初的想法是直接用一个map来进行数据处理.但是后来产生一个让我感到疑问的地方,后来我经过测试,发现了这 ...

  6. 第四弹:overfeat

    overfeat是在AlexNet出现后,推出来的模型,其不仅用于物体分类,来用于定位,检测等,可以说是一个涉及很多应用场景的通用模型,值得看看. 本文将从两个方面来讲解,第一部分从论文角度来说一说, ...

  7. 转载:org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.Annotation

    转载:org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.Annotation (2012 ...

  8. Alcatraz:插件管理

    安装: 终端粘贴 "curl -fsSL https://raw.github.com/alcatraz/Alcatraz/master/Scripts/install.sh | sh&qu ...

  9. CentOS 6.5 GIT 服务器搭建

    环境: Git Sserver IP: 10.6.0.2 Git Client IP: 10.6.0.126 1. 在 Git Server 安装软件所需的依赖包 yum install curl-d ...

  10. Cookie的格式及组成

    转自:http://blog.csdn.net/talking12391239/article/details/9665185 Cookie由变量名和值组成,类似JavaScript变量.其属性里既有 ...