2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Android实用笔记——使用ViewFlipper实现屏幕切换动画

Android实用笔记——使用ViewFlipper实现屏幕切换动画

时间:2018-10-27 11:51:37

相关推荐

Android实用笔记——使用ViewFlipper实现屏幕切换动画

独角兽企业重金招聘Python工程师标准>>>

1、ViewFlipper介绍

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

2、为ViewFlipper加入View

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

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

3、ViewFlipper常用方法:

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

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

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

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

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

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

stopFlipping 停止View切换

4、应用

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

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="/apk/res/android" ><translateandroid:duration="2000"android:fromXDelta="-100%p"android:toXDelta="0" /><alpha android:fromAlpha="0.5"android:toAlpha="1"android:duration="2000"/></set>

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="/apk/res/android" ><translateandroid:duration="2000"android:fromXDelta="0"android:toXDelta="100%p" /><alphaandroid:duration="2000"android:fromAlpha="0.5"android:toAlpha="1" /></set>

b、编辑activity_main.xml文件

<RelativeLayout xmlns:android="/apk/res/android"xmlns:tools="/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" ><ViewFlipper android:id="@+id/flipper"android:layout_width="match_parent"android:layout_height="match_parent"></ViewFlipper></RelativeLayout>

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;@Overrideprotected 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<resId.length;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文件中的淡入淡出取消掉

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。