Android实现左右滑动效果

news/2024/7/5 2:15:28

  本示例演示在Android中实现图片左右滑动效果。

 

  关于滑动效果,在Android中用得比较多,本示例实现的滑动效果是使用ViewFlipper来实现的,当然也可以使用其它的View来实现。接下来就让我们开始实现这种效果。为了方便大家理解,我们先来看一下效果图:

 

  主要效果图如下图:

 

    

 

  接下来我们看一下程序结构图:

 

  

 

  MainActivity文件中代码:

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;/*** Android实现左右滑动效果* @Description: Android实现左右滑动效果* @File: MainActivity.java* @Package com.android.flip* @Author Hanyonglu* @Date 2012-02-12 上午10:44:04* @Version V1.0*/
public class MainActivity extends Activity implements OnGestureListener {private ViewFlipper flipper;private GestureDetector detector;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);detector = new GestureDetector(this);flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper1);flipper.addView(addImageView(R.drawable.one));flipper.addView(addImageView(R.drawable.two));flipper.addView(addImageView(R.drawable.three));flipper.addView(addImageView(R.drawable.four));flipper.addView(addImageView(R.drawable.five));}private View addImageView(int id) {ImageView iv = new ImageView(this);iv.setImageResource(id);return iv;}@Overridepublic boolean onTouchEvent(MotionEvent event) {// TODO Auto-generated method stubreturn 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;}@Overridepublic void onLongPress(MotionEvent e) {// TODO Auto-generated method stub
        }@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,float distanceY) {// TODO Auto-generated method stubreturn false;}@Overridepublic void onShowPress(MotionEvent e) {// TODO Auto-generated method stub
        }@Overridepublic boolean onSingleTapUp(MotionEvent e) {// TODO Auto-generated method stubreturn false;}
}

 

  布局界面相对比较简单,我们只需要加入ViewFlipper就可以,代码如下: 

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation
="vertical"
    android:layout_width
="fill_parent"
    android:layout_height
="fill_parent"
    
>

    <ViewFlipper android:id="@+id/ViewFlipper1"
        android:layout_width
="fill_parent" 
        android:layout_height
="fill_parent">
    </ViewFlipper>

</LinearLayout> 

 

  为了使其滑动时有一定的特效,我们需要加入Animation效果,说到Animation,我们先看下如何在Android中实现自定义Animation。自定义的Animation是以XML格式定义的,定义好的XML文件存放在res/anim中。

 

  一般的Animation有以下四种类型:

  1. Alpha:渐变透明度动画效果

  2. Scale:渐变尺寸伸缩动画效果

  3. Translate:画面转换位置移动动画效果

  4. Rotate:画面转换位置移动动画效果

 

  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>  

 

  如果大家想实现带指引效果的左右滑动,请访问博文:http://www.cnblogs.com/hanyonglu/archive/2012/04/07/2435589.html 

 

  如果想实现带渐显按钮的左右滑动效果,请访问博文:http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2350171.html

 

  下载地址:点击下载

 

  最后,希望转载的朋友能够尊重作者的劳动成果,加上转载地址:http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2349827.html 谢谢。 

  

  结束。^_^

 


http://lihuaxi.xjx100.cn/news/269575.html

相关文章

​中国自动驾驶技术有多强?你可能还不知道

随着大数据、互联网、5G等技术在汽车领域的不断普及和推广&#xff0c;自动驾驶技术也开始为人们熟知。无论是新能源汽车还是传统汽车&#xff0c;自动驾驶都是业界未来需要抢占的制高点&#xff0c;越来越多的企业在自动驾驶领域开始发力。随着无人驾驶汽车相关法律法规的放宽…

2018.12.13待填之坑

https://www.cnblogs.com/dirge/p/5503289.html 关于无标号无/有根树计算转载于:https://www.cnblogs.com/Jessie-/p/10112030.html

android电视工程模式,智能电视如何打开ADB?进入工程模式方法

原标题&#xff1a;智能电视如何打开ADB&#xff1f;进入工程模式方法ADB调试是智能安卓设备特有的功能之一&#xff0c;一般情况下智能电视ADB调试是默认隐藏关闭的。ADB模式可以使电视与外界设备进行数据传送、例如我们通过远程推送安装第三方软件前就必须打开ADB调试功能。小…

超强后浪:14岁考上研究生,如今17岁的他或将成为全国最小的博士生!

点击上方“视学算法”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达本文来源&#xff1a;南京理工大学校友会、扬子晚报、广西新闻频道、新华日报、交汇点等14岁考上研究生&#xff0c;17岁考上博士&#xff0c;是种什么体验&#xff1f;能用…

AI | 优化背后的数学基础

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达编者按什么是优化呢&#xff1f;优化就是寻找函数的极值点。既然是针对函数的&#xff0c;其背后最重要的数学基础是什么呢&#xff1f;没错&#xff0c;就是微积分。那什…

域内渗透基本技巧

0x00 什么是域 有人说域是一种组织结构&#xff0c;是个安全边界。域也有另为一个名字&#xff0c;"活动目录"。不管域是什么&#xff0c;它总有一些特点&#xff0c;有了它&#xff0c;对管理一个机构的组织单元&#xff0c;人员&#xff0c;特别是计算机就方便了许…

企业数据库合规的最佳实践

PCI DSS当前对于数据库要求有下述明确的控制措施&#xff1a; • 对访问任意数据库的所有用户进行认证。 • 所有用户访问任何数据库时&#xff0c;用户的查询和操作&#xff08;例如移动、拷贝和删除&#xff09;只能通过编程性事务&#xff08;例如存储过程&#xff09;。 •…

python中读取文件过程中seek()函数的使用

python中读取文件过程中seek()函数的使用 目录 概述&#xff1a; 语法: 参数: 返回值: 实例&#xff1a; 概述&#xff1a; seek() 方法用于移动文件读取指针到指定位置。 语法&#xff1a; seek() 方法语法如下&#xff1a; 文件对象.seek(偏移量&#xff0c; 起始位…