文档章节

HoneyComb3.0技术系列之StackView

yolinfeng
 yolinfeng
发布于 2015/06/06 17:01
字数 437
阅读 50
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

1. 概述:

 

    StackView(堆View),一系列View的集合,这些View以层叠样式显示,并且View之间可以进行切换(切换方式有两种:(1)拖动StackView

 

    组件中的某一个View,(2)通过代码控制,下面介绍),这样每一个View都有机会显示给用户,供用户使用,并且在多个View切换过程中可以

 

    添加动画效果。

 

2. 效果图:

 

   (1)StackView默认显示效果,如下图:           StackView1

   (2)用鼠标向下拖动蓝色View,如下图:           StackView2

   (3)释放拖动的蓝色View,StackView会将下一个View切换到前台显示,如下图:           StackView3

3. 代码实现:

 

   (1)res/layout/main.xml实现:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    android:orientation = "horizontal"
    android:layout_width = "fill_parent"
    android:layout_height = "fill_parent"
    >
    
    <StackView
    	android:id = "@+id/mStackView"
    	android:layout_width = "fill_parent" 
    	android:layout_height = "wrap_content" 
    	android:loopViews = "true"
    	/>
    	
    <LinearLayout
    	android:orientation = "vertical"
    	android:layout_width = "wrap_content"
    	android:layout_height = "wrap_content"
    	>
    	
    	<Button
    		android:id = "@+id/previousButton"
    		android:layout_width = "wrap_content"
    		android:layout_height = "wrap_content"
    		android:text = "前一张"
    		/>
    		
    	<Button
    		android:id = "@+id/nextButton"
    		android:layout_width = "wrap_content"
    		android:layout_height = "wrap_content"
    		android:text = "后一张"
    		/>
    		
    </LinearLayout>
    
</LinearLayout>

 

   (2)主Activity实现:

package com.focus.stackview;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.StackView;

public class StackViewActivity extends Activity {
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        final StackView stackView = (StackView) findViewById(R.id.mStackView);
        
        ColorAdapter colorAdapter = new ColorAdapter(this, mColors);
        stackView.setAdapter(colorAdapter);
        
        final Button previousButon = (Button) findViewById(R.id.previousButton);
        previousButon.setOnClickListener(new OnClickListener() {
			public void onClick(View view) {
				stackView.showPrevious();
			}
		});
        
        final Button nextButton = (Button) findViewById(R.id.nextButton);
        nextButton.setOnClickListener(new OnClickListener() {
			public void onClick(View view) {
				stackView.showNext();
			}
		});
    }
    
    private int [] mColors = {Color.BLUE, Color.CYAN, Color.GRAY, Color.GREEN, Color.RED};
    
}

 

   (3)StackView的Adapter实现:

package com.focus.stackview;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;

public class ColorAdapter extends BaseAdapter {

	private Context mContext;
	
	private int [] mColors;
	
	public ColorAdapter(Context context, int [] colors) {
		mContext = context;
		mColors = colors;
	}
	
	public int getCount() {
		return mColors == null ? 0 : mColors.length;
	}

	public Object getItem(int position) {
		return mColors == null ? null : mColors[position];
	}

	public long getItemId(int position) {
		return position;
	}

	public View getView(int position, View cacheView, ViewGroup parent) {
		LinearLayout.LayoutParams colorLayoutParams = new LinearLayout.LayoutParams(100, 100);
		
		LinearLayout colorLayout = new LinearLayout(mContext);
		colorLayout.setBackgroundColor(mColors[position]);
		colorLayout.setLayoutParams(colorLayoutParams);
		
		return colorLayout;
	}

}

本文转载自:http://blog.csdn.net/mayingcai1987/article/details/6232852

yolinfeng
粉丝 12
博文 196
码字总数 11946
作品 0
珠海
架构师
私信 提问
iOS9新特性——堆叠视图UIStackView

iOS9新特性——堆叠视图UIStackView 一、引言 随着autolayout的推广开来,更多的app开始使用自动布局的方式来构建自己的UI系统,autolayout配合storyBoard和一些第三方的框架,对于创建约束来...

珲少
2015/11/17
3.4K
0
Qt Quick之StackView详解(1)

Qt Quick中有个StackView,我在《Qt Quick核心编程》一书中没有讲到,最近有人问起,趁机学习了一下,把它的基本用法记录下来。 我准备分两次来讲。第一次讲基本的用法,包括StackView的适用...

foruok
2015/07/13
0
0
Qt Quick之StackView详解(2)

在“StackView详解(1)”中,我们学习了StackView的基本用法,这次呢,我们来讲delegate的定制、被管理的View的生命周期、查找View等主题。 本文还会用到“StackView详解(1)”中的示例,如...

foruok
2015/07/15
0
0
iOS9 UIStackView很好用的控件,无需任何约束

先上效果图 新建项目打开storyboard,ViewController里拖入这些控件 上面的stackView设置 下面的stackView设置   为上面的stackView 添加约束 为下面的stackView 添加约束 下面添加代码...

云上飞飞
2017/11/03
20
0
UIStackView相关

从iOS9开始,苹果提供了UIStackView来帮助我们做布局,这玩意儿类似于安卓的线性布局。因为在使用过程中会遇到一些坑,所以写出来供遇到同样问题的人参考。我在这里提供xib和纯代码两种方式创...

陈中宝
2015/10/09
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

web前端入门到实战:图解原生dialog标签(非常详细)

在html5中,新增了很多语义化的标签。如footer、header之类的,今天的主角是dialog标签 顾名思义,就是用来定义对话框的。目前只有Chrome和Safari支持该标签,所以用的不多,不过确实挺好用的...

梦想编程
27分钟前
4
0
一些php常用函数积累

本文链接<?php// id: ecffe70d3af54df9bad97b61918ace7d global $ct_path, $ct_log_path;$log_path = "test_php.txt";// 是否先log到buffer,再通过CT_flush()一次性写入文件$......

一字见心
28分钟前
4
0
IntelliJ idea中 注释代码折叠

visual studio中有#region 可以折叠代码,IntelliJ idea 中也有类似功能 //region 描述代码//endregion

format
28分钟前
5
0
oracle表中更改主键

一、数据表有主键但无主键约束名 先删除之前的主键,后添加主键 ,执行SQL: a. alter table 表名 drop primary key; b. alter table 表名 add primary key(想要更改的字段名称); 二、数据表...

_Somuns
30分钟前
4
0
jQuery AJAX提交表单

我有一个名称为orderproductForm的表单,输入的数量不确定。 我想做某种jQuery.get或ajax或类似的事情,它将通过Ajax调用页面,并发送所有形式为orderproductForm的输入。 我想一种方法是做类...

技术盛宴
35分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部