java猴子吃香蕉_Android实用笔记——使用ViewFlipper实现屏幕切换动画

1、ViewFlipper介绍

Android系统自带的一个多页面管理控件,他可以实现子界面的自切换。

2、为ViewFlipper加入View

a、静态导入:在layout布局文件中直接导入。在布局文件中写死,不灵活。

725389

8c664c22ad3654d0262b125636f96924.png

b、动态导入:addView()方法:

e3afb2b41b5e5a4ca4ff1f537e18a025.png

3、

725389

725389ViewFlipper常用方法:

setInAnimation    设置View进入屏幕时候使用的动画

setOutAnimation    设置View退出屏幕时候使用的动画

showNext    调用该函数来显示ViewFlipper里面的下一个View

showPrevious    调用还函数来显示ViewFlipper里面的上一个View

setFilpInterval    设置View之间切换的时间间隔

startFlipping    使用上面设置的时间间隔来开始切换所有的View,切换会循环进行

stopFlipping    停止View切换

4、应用

a、设置动画效果文件left_in.xml、left_out.xml

android:duration="2000"

android:fromXDelta="-100%p"

android:toXDelta="0" />

android:fromAlpha="0.5"

android:toAlpha="1"

android:duration="2000"

/>

android:duration="2000"

android:fromXDelta="0"

android:toXDelta="100%p" />

android:duration="2000"

android:fromAlpha="0.5"

android:toAlpha="1" />

b、编辑activity_main.xml文件

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".MainActivity" >

android:id="@+id/flipper"

android:layout_width="match_parent"

android:layout_height="match_parent"

>

c、编辑MainActivity.java文件

package com.example.myandroidviewflipper;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.view.MotionEvent;

import android.widget.ImageView;

import android.widget.ViewFlipper;

public class MainActivity extends Activity {

//1、定义ViewFlipper对象

private ViewFlipper flipper;

//4、将图片资源对应的ID写在数组中

private int[]resId={R.drawable.pic1,R.drawable.pic2,R.drawable.pic3,R.drawable.pic4};

//8、声明变量记录手指坐标

private float startX;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//2、初始化变量

flipper=(ViewFlipper) findViewById(R.id.flipper);

//3、动态导入的方式为ViewFlipper加入子View,循环遍历

for(int i=0;i

flipper.addView(getImageView(resId[i]));

}

//10、注释掉自动播放,以响应手指操作

//4、设置ViewFlipper的动画效果

//flipper.setInAnimation(this,R.anim.left_in);

//flipper.setOutAnimation(this, R.anim.left_out);

//5、设置ViewFlipper切换时间间隔

flipper.setFlipInterval(3000);

//6、开始时间

flipper.startFlipping();

}

//7、加入函数天添加手势支持的操作

public boolean onTouchEvent(MotionEvent event){

//9、编辑具体事件

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){

flipper.setInAnimation(this,R.anim.left_in);

flipper.setOutAnimation(this, R.anim.left_out);

flipper.showPrevious();//显示前一页

}

//向左滑动看后一页

if(startX-event.getX()<100){

flipper.setInAnimation(this,R.anim.right_in);

flipper.setOutAnimation(this, R.anim.right_out);

flipper.showNext();//显示前一页

}

break;

}

}

return super.onTouchEvent(event);

}

private ImageView getImageView(int resId){

ImageView image=new ImageView(this);

//这种方式设置的宽高是图片原宽高,不是适应屏幕的,所以不能用这种方式改用另一种方式

//image.setImageResource(resId);

image.setBackgroundResource(resId);

return image;

}

}

//11、发现有图层叠加,我们把效果的xml文件中的淡入淡出取消掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值