android 滑动窗体使用方法,Android实现左右滑动效果的方法详解

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

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

主要效果图如下图:

1546454524-0.jpg  

1546454156-1.jpg

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

154645EI-2.png

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就可以,代码如下:

复制代码 代码如下:

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="fill_parent">

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

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

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

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

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

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

push_left_in.xml文件中代码:

复制代码 代码如下:

android:duration="500" />

android:duration="500" />

push_left_out.xml文件中代码:

复制代码 代码如下:

android:duration="500" />

android:duration="500" />

push_right_in.xml文件中代码:

复制代码 代码如下:

android:duration="500" />

android:duration="500" />

push_right_out.xml文件中代码:

复制代码 代码如下:

android:duration="500" />

android:duration="500" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值