Android实现图片左右滑动效果

 更新时间:2016年10月19日 09:58:52   作者:Healtheon  
现在滑动效果用的比较多,尤其是在手机端上面,本文介绍了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. */
  @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(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;
  }
  
  @Override
  public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
    return this.detector.onTouchEvent(event);
  }
  
  @Override
  public boolean onDown(MotionEvent e) {
    // TODO Auto-generated method stub
    return false;
  }
  
  @Override
  public 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;
  }
}

布局界面相对比较简单,我们只需要加入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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android编程实现应用程序开机自启动的方法

    Android编程实现应用程序开机自启动的方法

    这篇文章主要介绍了Android编程实现应用程序开机自启动的方法,涉及Android权限控制及广播操作相关技巧,需要的朋友可以参考下
    2017-02-02
  • Android TabWidget切换卡的实现应用

    Android TabWidget切换卡的实现应用

    本篇文章小编为大家介绍,Android TabWidget切换卡的实现应用。需要的朋友参考下
    2013-04-04
  • 新版Flutter集成到已有Android项目的实现

    新版Flutter集成到已有Android项目的实现

    这篇文章主要介绍了新版Flutter集成到已有Android项目的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Activity/Fragment结束时处理异步回调的解决方案

    Activity/Fragment结束时处理异步回调的解决方案

    这篇文章主要介绍了关于在Activity/Fragment结束时处理异步回调的解决方案,文中介绍的非常详细,对大家的学习或者工作具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • Android列表动图展示的实现策略

    Android列表动图展示的实现策略

    这篇文章主要给大家介绍了关于Android列表动图展示的实现策略的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • android IPC之binder通信机制

    android IPC之binder通信机制

    Binder通信机制说来简单,但是在使用的过程的遇到了一些问题,最后终于解决了,现在晒出来和大家分享一下,希望可以帮助你们
    2012-11-11
  • Android开发实现的标准体重计算器功能示例

    Android开发实现的标准体重计算器功能示例

    这篇文章主要介绍了Android开发实现的标准体重计算器功能,结合实例形式分析了Android体重计算器的界面布局与功能实现相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • Android webView如何输出自定义网页

    Android webView如何输出自定义网页

    这篇文章主要介绍了Android webView如何输出自定义网页,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 轻松实现Android3D效果通俗易懂

    轻松实现Android3D效果通俗易懂

    前几天有粉丝要求计蒙写一个3d效果的简单教程,其实这个在Android官方demo中是有的,可能对于新手而言看不太明白,于是根据本人自己的理解来写一个教程,并改成粉丝要求的样子
    2021-08-08
  • Android 读取文件内容实现方法总结

    Android 读取文件内容实现方法总结

    这篇文章主要介绍了Android 读取文件内容实现方法的相关资料,这里提供了几种方法,大家可以选择使用,需要的朋友可以参考下
    2016-10-10

最新评论