文档章节

AdapterViewFlipper的功能和用法

yolinfeng
 yolinfeng
发布于 2015/06/06 16:59
字数 720
阅读 2559
收藏 0

       AdapterView继承了AdapterViewAnimator,它也会显示Adapter提供的多个View组件,但每次只能显示一个View组件,程序可通过showPrevious和showNext()方法控制该组件显示上一个、下一个组价。

       AdapterViewFlipper可以在多个View切换过程中使用渐隐渐现的动画效果,除此之外,还可以调用该组件的startFlipping()控制它“自动播放”下一个View组件。

       实例:自动播放的图片库

       下面的实例示范了如何使用AdapterViewFlipper开发自动播放的图片库,该实例的界面上除了包含一个AdapterViewFilpper之外,还包含三个按钮,用于控制显示“上一个”、“下一个”和“自动播放”。为了控制AdapterViewFlipper要显示的多个列表项,程序为AdapterVIewFilpper设置一个Adapter即可。

       下面是该实例的XML布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   >
 <AdapterViewFlipper android:id="@+id/flipper" android:layout_width="match_parent" android:layout_height="match_parent" android:flipInterval="5000" android:layout_alignParentTop="true"/>  <Button android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentBottom="true"
     android:layout_alignParentLeft="true"
     android:onClick="prev"
     android:text="上一个"/>
 <Button android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentBottom="true"
     android:layout_centerHorizontal="true"
     android:onClick="next"
     android:text="下一个"/>
 <Button android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentBottom="true"
     android:layout_alignParentRight="true"
     android:onClick="auto"
     android:text="自动播放"/>"

</RelativeLayout>

上面的粗体字代码定义了一个AdapterViewFlipper组件,并为三个按钮指定了事件处理方法。该实例的Activiy会采用扩展BaseAdapter的方式来实现自己的Adapte,并为AdapterViewFlipper组件设置Adapter,下面是该Activity的代码。
后台代码文件如下:

package org.crazyit.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterViewFlipper;
import android.widget.BaseAdapter;
import android.widget.ImageView;

public class AdapterViewFlipperTest extends Activity {
     int[] imageIds=new int[]{
             R.drawable.shuangzi,
             R.drawable.shuangyu,
             R.drawable.chunv,
             R.drawable.tiancheng,
             R.drawable.tianxie,
             R.drawable.sheshou,
             R.drawable.juxie,
             R.drawable.shuiping,
             R.drawable.shizi,
             R.drawable.baiyang,
             R.drawable.jinniu,
             R.drawable.mojie
     };
     AdapterViewFlipper flipper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_adapter_view_flipper_test);
        flipper=(AdapterViewFlipper)findViewById(R.id.flipper);
        //创建一个BaseAdapter对象,该对象负责提供Gallery所显示的列表项
        BaseAdapter adapter=new BaseAdapter()
        {

            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return imageIds.length;
            }

            @Override
            public Object getItem(int position) {
                // TODO Auto-generated method stub
                return position;
            }

            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return position;
            }
            //该方法返回的View代表了每个列表项
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                // TODO Auto-generated method stub
                //创建一个ImageView
                ImageView imageView=new ImageView(AdapterViewFlipperTest.this);
                imageView.setImageResource(imageIds[position]);
                //设置ImageView的缩放类型
                imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                //为ImageView设置布局参数
                imageView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
                        LayoutParams.MATCH_PARENT));
                return imageView;
            }
        };
        flipper.setAdapter(adapter);
    }
    
    public void prev(View source)
    {
        //显示上一个组件
        flipper.showPrevious();
        //停止自动播放
        flipper.stopFlipping();
    }
    
    public void next(View source)
    {
        //显示一个组件
        flipper.showNext();
        //停止自动播放
        flipper.stopFlipping();
    }
    
    public void auto(View source)
    {
        //开始自动播放
 flipper.startFlipping();         
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.adapter_view_flipper_test, menu);
        return true;
    }

}

上面的程序中粗体字代码调用了AdapterViewFlipper的showPrevious()、showNext()方法来控制该组件显示上一个、下一个组价,并调用了startFlipping()方法控制自动播放。

运行上面的程序出现如下效果:

 

本文转载自:http://www.cnblogs.com/wolipengbo/p/3381792.html

yolinfeng
粉丝 12
博文 196
码字总数 11946
作品 0
珠海
架构师
私信 提问
加载中

评论(2)

yolinfeng
yolinfeng

引用来自“PlaseCallMeYJH”的评论

自动播放时,图片有闪烁的效果,这样如何解决?
我这边不会哦,你试试看是不是机子问题吧,如果不是的话,就设置切换动画试试
PlaseCallMeYJH
PlaseCallMeYJH
自动播放时,图片有闪烁的效果,这样如何解决?
How to use AdapterViewFlipper?

I'm developing a simple photo gallery application that pulls files from the Net and ses a ViewFlipper to change Views. Since I don't know how many Views the ViewFlipper will hav......

leveme
2012/09/06
769
1
Android AdapterViewAnimator控件

AdapterViewAnimator(堆View),已知子类有AdapterViewFlipper, StackView,是一系列View的集合,这些View叠加一起,并且View之间可以进行切换,并且在多个View切换过程体现渐隐渐现的动画效...

amigos_wu
2012/06/19
0
0
The Busy Coder's Guide to Android Development 学习

The Busy Coder's Guide to Android Development 是一本超过3700页的Android开发书籍,每年更新5+次,它涵盖了Android的Studio和最新的Android的SDK。 官网地址:https://commonsware.com/ ...

tianyiling
2016/03/22
163
0
View和ViewGroup常用方法

Android的UI界面都是由View和ViewGroup及其派生类组合而成的。 其中,View是所有UI组件的基类,而 ViewGroup是容纳这些组件的容器,其本身也是从View派生出来的. View对象是Android平台中用户...

垂盆草
2012/06/30
0
2
View与ViewGroup的事件分发与事件拦截,及自定义ViewGroup

> View控件树与ViewGroup控件容器 自定义ViewGroup:http://blog.csdn.net/lmj623565791/article/details/38339817/ View与ViewGroup:一个用户的交互Android设备可能的例外是主要的视觉和触...

shareus
2016/03/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

宜信开源|一个实例解析PaaS平台LAIN的9大杀手级功能

一、基于Docker的PaaS平台LAIN 在金融的场景下,LAIN 是为解放各个团队和业务线的生产力而设计的一个云平台。LAIN 正式上线已经大约两年,基本已经成熟,为宜信大数据创新中心各个团队提供了...

宜信技术学院
21分钟前
3
0
DBeaver调整编辑窗口字体大小

窗口-->首选项: 点击“编辑”之后,字体大小设为11的大小即比较合适。

BG2KNT
27分钟前
2
0
【Kubernetes社区之路】Slack沟通工具简介

什么是Slack Slack(https://slack.com) 是一款沟通工具,它与国内常见的微信、微博、QQ、钉钉有很大的不同,Slack主要用于工作讨论,可以让讨论更加高效。 Slack的口号便是让工作变得简单、...

恋恋美食
40分钟前
2
0
Visual Paradigm 教程[UML]:如何在SoaML中建模多方服务?

下载Visual Paradigm最新试用版 编写本教程是为了解释多方服务在SoaML方面的含义以及如何使用各种SoaML图表指定此类服务Visual Paradigm。 本教程中将使用的示例是通过在线银行账户纳税。您将...

xiaochuachua
40分钟前
0
0
SpringMVC 的Controller方法声明为private 或者 public 有什么区别

平常没有区别,都能正常处理请求。只有在使用AOP时会有问题: Controller方法声明为private时会出现获取到的注入service属性为null的问题,public方法才能正常获取注入的service。 原因如下:...

为了美好的明天
43分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部