ViewFlipper的简单应用

    ViewFlipper是Android提供提个可自动切换View的控件,承于ViewAnimator类。而ViewAnimator类继承于FrameLayout,查看ViewAnimator类的源码可以看出此类的作用主要是为其中的View切换提供动画效果。常用方法如下:

    setInAnimation:设置View进入屏幕时候使用的动画。该方法有两个重载方法,即可以直接传入Animation对象,也可以传入定义的Animation文件的resourceID。

    setOutAnimation:设置View退出屏幕时候使用的动画。使用方法和setInAnimation方法一样。

    showNext:调用该方法可以显示FrameLayout里面的下一个View。        

    showPrevious:调用该方法可以来显示FrameLayout里面的上一个View。           

    setFilpInterval:设置View切换的时间间隔。参数为毫秒。

    startFlipping:开始进行View的切换,时间间隔是上述方法设置的间隔数。切换会循环进行。

    stopFlipping:停止View切换。

    setAutoStart:设置是否自动开始。如果设置为“true”,当ViewFlipper显示的时候View的切换会自动开始。

    直接上代码:
package com.example.lowp.viewflipper;

import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.ViewFlipper;

public class MainActivity extends Activity {

    private ViewFlipper viewFlipper;
    private int[] resId = {R.mipmap.pic1,R.mipmap.pic2,R.mipmap.pic3,R.mipmap.pic4};
    private float startX; //滑动的起始坐标

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        //初始化控件
        viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper);

        for (int i = 0; i < resId.length;i++){
            viewFlipper.addView(getImage(resId[i]));
        }

        //添加动画效果
//        viewFlipper.setInAnimation(this, R.anim.left_in);
//        viewFlipper.setOutAnimation(this , R.anim.left_out);
//        //3s切换
//        viewFlipper.setFlipInterval(3000);
//        viewFlipper.startFlipping();


    }


    public ImageView getImage(int resId){
        final ImageView imageView = new ImageView(this);
        imageView.setBackgroundResource(resId);

//        imageView.setOnClickListener(new View.OnClickListener() {
//                @Override
//                public void onClick(View v) {
//                    Toast.makeText(MainActivity.this,imageView.getBackground().toString(),Toast.LENGTH_SHORT).show();
//                }
//            });


        return imageView;
    }


    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {

            case MotionEvent.ACTION_DOWN:
                startX = event.getX();
                break;
            case MotionEvent.ACTION_MOVE:

                break;
            case MotionEvent.ACTION_UP:
                //向右滑动,出现前一页
                if(event.getX() - startX > 100){
                    viewFlipper.setInAnimation(this, R.anim.left_in);
                    viewFlipper.setOutAnimation(this, R.anim.left_out);
                    viewFlipper.showPrevious();
                }
                //向左滑动,出现后一页
                if(startX - event.getX() > 100){
                    viewFlipper.setInAnimation(this, R.anim.right_in);
                    viewFlipper.setOutAnimation(this, R.anim.right_out);
                    viewFlipper.showNext();
                }
                break;

        }
        return super.onTouchEvent(event);
    }
}

源码下载:http://download.csdn.net/detail/qq_24789865/9123769

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值