Android StackView

原链接:http://blog.csdn.net/mayingcai1987/article/details/6232852

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实现:

[java] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"

  3.    android:orientation = "horizontal"

  4.    android:layout_width = "fill_parent"

  5.    android:layout_height = "fill_parent"

  6.    >  

  7.    <StackView  

  8.        android:id = "@+id/mStackView"

  9.        android:layout_width = "fill_parent"

  10.        android:layout_height = "wrap_content"

  11.        android:loopViews = "true"

  12.        />  

  13.    <LinearLayout  

  14.        android:orientation = "vertical"

  15.        android:layout_width = "wrap_content"

  16.        android:layout_height = "wrap_content"

  17.        >  

  18.        <Button  

  19.            android:id = "@+id/previousButton"

  20.            android:layout_width = "wrap_content"

  21.            android:layout_height = "wrap_content"

  22.            android:text = "前一张"

  23.            />  

  24.        <Button  

  25.            android:id = "@+id/nextButton"

  26.            android:layout_width = "wrap_content"

  27.            android:layout_height = "wrap_content"

  28.            android:text = "后一张"

  29.            />  

  30.    </LinearLayout>  

  31. </LinearLayout>  



  (2)主Activity实现:

[java] view plain copy
  1. package com.focus.stackview;  

  2. import android.app.Activity;  

  3. import android.graphics.Color;  

  4. import android.os.Bundle;  

  5. import android.view.View;  

  6. import android.view.View.OnClickListener;  

  7. import android.widget.Button;  

  8. import android.widget.StackView;  

  9. publicclass StackViewActivity extends Activity {  

  10. @Override

  11. publicvoid onCreate(Bundle savedInstanceState) {  

  12. super.onCreate(savedInstanceState);  

  13.        setContentView(R.layout.main);  

  14. final StackView stackView = (StackView) findViewById(R.id.mStackView);  

  15.        ColorAdapter colorAdapter = new ColorAdapter(this, mColors);  

  16.        stackView.setAdapter(colorAdapter);  

  17. final Button previousButon = (Button) findViewById(R.id.previousButton);  

  18.        previousButon.setOnClickListener(new OnClickListener() {  

  19. publicvoid onClick(View view) {  

  20.                stackView.showPrevious();  

  21.            }  

  22.        });  

  23. final Button nextButton = (Button) findViewById(R.id.nextButton);  

  24.        nextButton.setOnClickListener(new OnClickListener() {  

  25. publicvoid onClick(View view) {  

  26.                stackView.showNext();  

  27.            }  

  28.        });  

  29.    }  

  30. privateint [] mColors = {Color.BLUE, Color.CYAN, Color.GRAY, Color.GREEN, Color.RED};  

  31. }  



  (3)StackView的Adapter实现:

[java] view plain copy
  1. package com.focus.stackview;  

  2. import android.content.Context;  

  3. import android.view.View;  

  4. import android.view.ViewGroup;  

  5. import android.widget.BaseAdapter;  

  6. import android.widget.LinearLayout;  

  7. publicclass ColorAdapter extends BaseAdapter {  

  8. private Context mContext;  

  9. privateint [] mColors;  

  10. public ColorAdapter(Context context, int [] colors) {  

  11.        mContext = context;  

  12.        mColors = colors;  

  13.    }  

  14. publicint getCount() {  

  15. return mColors == null ? 0 : mColors.length;  

  16.    }  

  17. public Object getItem(int position) {  

  18. return mColors == null ? null : mColors[position];  

  19.    }  

  20. publiclong getItemId(int position) {  

  21. return position;  

  22.    }  

  23. public View getView(int position, View cacheView, ViewGroup parent) {  

  24.        LinearLayout.LayoutParams colorLayoutParams = new LinearLayout.LayoutParams(100, 100);  

  25.        LinearLayout colorLayout = new LinearLayout(mContext);  

  26.        colorLayout.setBackgroundColor(mColors[position]);  

  27.        colorLayout.setLayoutParams(colorLayoutParams);  

  28. return colorLayout;  

  29.    }  

  30. }  



你可能感兴趣的:(android,stackview)