zoukankan      html  css  js  c++  java
  • AdapterViewFlipper的功能和用法

           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()方法控制自动播放。

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

  • 相关阅读:
    Mysql 的安装(压缩文件)和基本管理
    Mysql 数据库安装与配置详解
    Bootstrap的插件
    Bootstrap学习
    移动端单位介绍
    响应式页面-@media介绍
    前端 ---jQuery的补充
    前端 ---- jQuery的ajax
    前端 ----轮播图实现
    安装scrapy时遇到的问题
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3381792.html
Copyright © 2011-2022 走看看