StackView是AdapterViewAnimator的子类,它用于显示Adapter提供的一系列View。StackView将会以“堆叠”的方式来显示多个列表项。
为了控制StackView现实的View组将,StackView提供了如下两种控制方式。
- 拖走StackView中处于顶端的View,下一个View将会显示出来。将上一个View拖进StackView,将使之显示出来。
- 通过调用StackView的showNext()、showPrevious()控制显示下一个、上一个组件。
下面通过实例示范了StackView的功能与用法。
该实例将会使用StackView将照片叠在一起,并允许用户通过拖动或单击按钮来显示上一个、下一个图片。
public class MainActivity extends AppCompatActivity {
private StackView stackView;
private 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.activity_main);
stackView = findViewById(R.id.mStackView);
//创建一个List对象,List对象的元素是Map
List<Map<String, Object>> listItems = new ArrayList<>();
for (int i = 0; i < imageIds.length; i++) {
Map<String, Object> listItem = new HashMap<>();
listItem.put("image", imageIds[i]);
listItems.add(listItem);
}
//创建一个SimpleAdapter
SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems,
R.layout.cell, /* /layout/cell.xml文件作为单元格布局 */
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();
}
}
上面代码中红色字体创建一个SimpleAdapter,并将SimpleAdapter设置为该SimpleAdapter的Adpater,这样该StackView将会显示该SimpleAdapter包含的一系列View组件。