Android(安卓)ViewFlipper实现页面的滑动切换
16lz
2021-01-25
在屏幕中滑动左右界面实现,页面的切换。
动画效果设置文件如下:
push_left_in.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><translate android:fromXDelta="100%p" android:toXDelta="0"android:duration="500" /><alpha android:fromAlpha="0.1" android:toAlpha="1.0"android:duration="500" /></set>
push_left_out.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><translate android:fromXDelta="0" android:toXDelta="-100%p"android:duration="500" /><alpha android:fromAlpha="1.0" android:toAlpha="0.1"android:duration="500" /></set>
push_right_in.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><translate android:fromXDelta="-100%p" android:toXDelta="0"android:duration="500" /><alpha android:fromAlpha="0.1" android:toAlpha="1.0"android:duration="500" /></set>
push_right_out.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><translate android:fromXDelta="0" android:toXDelta="100%p"android:duration="500" /><alpha android:fromAlpha="1.0" android:toAlpha="0.1"android:duration="500" /></set>
实现代码如下:
package com.android.flip;import android.app.Activity;import android.os.Bundle;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.View;import android.view.GestureDetector.OnGestureListener;import android.view.animation.AnimationUtils;import android.widget.ImageView;import android.widget.ViewFlipper;/** * 为了使其滑动时有一定的特效,我们需要加入Animation效果,说到Animation,我们先看下如何 * 在Android中实现自定义Animation。自定义的Animation是以XML格式定义的,定义好的XML文件 * 存放在res/anim中。 一般的Animation有以下四种类型: 1. Alpha:渐变透明度动画效果 2. Scale:渐变尺寸伸缩动画效果 3. Translate:画面转换位置移动动画效果 4. Rotate:画面转换位置移动动画效果 * Android实现左右滑动效果 * 通过ViewFilpper实现相关的左右滑动功能,ViewFilpper必须在GestureDetector的配合下实现 * * * * @author longgangbai * */public class MainActivity extends Activity implements OnGestureListener {private ViewFlipper flipper;private GestureDetector detector; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); detector = new GestureDetector(this);flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper1);flipper.addView(addTextView(R.drawable.photo1));flipper.addView(addTextView(R.drawable.photo2));flipper.addView(addTextView(R.drawable.photo3));flipper.addView(addTextView(R.drawable.photo4));flipper.addView(addTextView(R.drawable.photo5)); } private View addTextView(int id) {ImageView iv = new ImageView(this);iv.setImageResource(id);return iv;} @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub return this.detector.onTouchEvent(event); } @Overridepublic boolean onDown(MotionEvent e) {// TODO Auto-generated method stubreturn false;} @Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {if (e1.getX() - e2.getX() > 120) {this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));this.flipper.showNext();return true;} else if (e1.getX() - e2.getX() < -120) {this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out));this.flipper.showPrevious();return true;}return false;} @Override public void onLongPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // TODO Auto-generated method stub return false; } @Override public void onShowPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub return false; }}
更多相关文章
- layout_weight详解
- Android马赛克效果MosaicView
- 安卓布局应用学习代码附带效果图
- Android(安卓)抽屉效果
- Android(安卓)shap Animation
- 【Android动画九章】-帧动画
- Android(安卓)中把Activity当作Dialog来使用
- Android(安卓)Activity切换动画 左右滑进滑出
- android.graphics.Paint类详解