zoukankan      html  css  js  c++  java
  • ViewFlipper的功能与用法

        ViewFlipper组件继承了ViewAnimator,它可调用addView(View v)添加多个组件,一旦向ViewFlipper中添加了多个组件之后,ViewFlipper可使用动画控制多个组件之间的切换效果。

        ViewFlipper与之前介绍的AdapterViewFlipper有较大的相似性,它们可以控制组件切换的动画效果。它们的区别是:ViewFlipper需要开发者通过addView(View v)添加多个View,而AdapterViewFlipper则只要传入一个Adapter,Adapter将会负责提供多个View。因此ViewFlipper可以指定与AdapterViewFlipper相同的XML属性。

        实例:自动播放的图片库

         该实例与前面介绍的AdapterViewFlipper实例非常相似,区别只是该实例直接定义了该ViewFlipper所包含的View组件。下面是该实例的界面布局文件。

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
       <ViewFlipper android:id="@+id/details"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:flipInterval="1000" >
       <ImageView android:src="@drawable/java"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content" />
        <ImageView android:src="@drawable/android"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content" />
         <ImageView android:src="@drawable/ee"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content" />
       </ViewFlipper>
       <Button android:text="&lt;"
           android:onClick="prev"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentBottom="true"
           android:layout_alignParentLeft="true"/>
       <Button android:text="自动播放"
           android:onClick="auto"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentBottom="true"
           android:layout_centerInParent="true"/>
        <Button android:text="&gt;"
           android:onClick="next"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentBottom="true"
           android:layout_alignParentRight="true"/>
    </RelativeLayout>

    上面的布局文件中定义了一个ViewFlipper,并在该ViewFlipper中定义了三个ImageView,这意味着该ViewFlipper包含了三个组件。接下来在Activity代码中即可调用ViewFlipper的showPrevious()、showNext()等方法控制ViewFlipper显示上一个、下一个子组件。为了控制组件切换时的动画效果,还需要调用ViewFlipper的setInAnimation()、setOutAnimation()方法设置动画效果。

         下面是该Activity的代码。

    package org.crazyit.helloworld;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.widget.ViewFlipper;
    
    public class ViewFlipperTest extends Activity {
        private ViewFlipper viewFlipper;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.view_flipper_test);
            viewFlipper=(ViewFlipper)findViewById(R.id.details);
        }
        
        public void prev(View source)
        {
            viewFlipper.setInAnimation(this,R.anim.slide_in_right);
            viewFlipper.setInAnimation(this,R.anim.slide_out_left);
            //显示下一个组件
            viewFlipper.showPrevious();
            //停止自动播放
            viewFlipper.stopFlipping();
        }
        
        public void next(View source)
        {
            viewFlipper.setInAnimation(this,R.anim.slide_in_left);
            viewFlipper.setInAnimation(this,R.anim.slide_out_right);
            //显示下一个组件
            viewFlipper.showNext();
            //停止自动播放
            viewFlipper.stopFlipping();
        }
        
        public void auto(View source)
        {
            viewFlipper.setInAnimation(this,R.anim.slide_in_left);
            viewFlipper.setInAnimation(this,R.anim.slide_out_right);
            
            //自动播放
            viewFlipper.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.view_flipper_test, menu);
            return true;
        }
    
    }

    运行上面的Activity代码即可看到如下效果:

  • 相关阅读:
    OutputCache 缓存key的创建 CreateOutputCachedItemKey
    Asp.net Web Api源码调试
    asp.net mvc源码分析DefaultModelBinder 自定义的普通数据类型的绑定和验证
    Asp.net web Api源码分析HttpParameterBinding
    Asp.net web Api源码分析HttpRequestMessage的创建
    asp.net mvc源码分析ActionResult篇 RazorView.RenderView
    Asp.Net MVC 项目预编译 View
    Asp.net Web.config文件读取路径你真的清楚吗?
    asp.net 动态创建TextBox控件 如何加载状态信息
    asp.net mvc源码分析BeginForm方法 和ClientValidationEnabled 属性
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3388579.html
Copyright © 2011-2022 走看看