展会信息港展会大全

编写android简单的手势切换视图示例 android开发教程
来源:互联网   发布日期:2015-10-02 16:07:58   浏览:3565次  

导读:android的home screen,可以通过手指的向左拖动和向右拖动,切换屏幕视图。这样做的好处是用户体验比较好,比向下滚屏或者使用tab切换视图。在自己的代码中要用到这个动作效果。这里需要用到:android.widget.V......

android的home screen,可以通过手指的向左拖动和向右拖动,切换屏幕视图。

这样做的好处是用户体验比较好,比向下滚屏或者使用tab切换视图。

在自己的代码中要用到这个动作效果。这里需要用到:

android.widget.ViewFlipper

ViewFlipper是一种Layout,可以在xml中声明。我的例子只做到:

两个视图,手势左右移动,两个视图切换。

xml文件中的内容:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="horizontal" android:layout_width="fill_parent"

android:layout_height="fill_parent" android:background="@color/back_ground">

<ViewFlipper android:id="@+id/ViewFlipper01"

android:layout_width="wrap_content" android:layout_height="wrap_content">

<LinearLayout android:id="@+id/LinearLayout01"

android:layout_width="wrap_content" android:layout_height="wrap_content">

<TextView android:text="第1屏" android:id="@+id/TextView01"

android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>

</LinearLayout>

<LinearLayout android:id="@+id/LinearLayout02"

android:layout_width="wrap_content" android:layout_height="wrap_content">

<TextView android:text="第2屏" android:id="@+id/TextView02"

android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>

</LinearLayout>

</ViewFlipper>

</LinearLayout>

代码也不复杂,需要:

实现OnGestureListener接口,在onFling方法中判断手势的左右移动并给出相应的动作;

创建一个GestureDetector实例,把实现的OnGestureListener实例通过构造方法赋值给它;

覆盖Activity的onTouchEvent方法,在方法内部,调用GestureDetector实例的onTouchEvent方法。

代码:

package com.easymorse;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.view.GestureDetector;

import android.view.MotionEvent;

import android.view.GestureDetector.OnGestureListener;

import android.widget.ViewFlipper;

public class MainActivity extends Activity implements

OnGestureListener {

private ViewFlipper flipper;

private GestureDetector detector;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

detector = new GestureDetector(this);

flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper01);

}

@Override

public boolean onTouchEvent(MotionEvent event) {

Log.v("golf", "touched");

return this.detector.onTouchEvent(event);

}

@Override

public boolean onDown(MotionEvent e) {

return false;

}

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,

float velocityY) {

Log.i("golf", "fling ");

if (e1.getX() > e2.getX()) {

this.flipper.showNext();

} else if (e1.getX() < e2.getX()) {

this.flipper.showPrevious();

} else {

return false;

}

return true;

}

@Override

public void onLongPress(MotionEvent e) {

}

@Override

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,

float distanceY) {

return false;

}

@Override

public void onShowPress(MotionEvent e) {

}

@Override

public boolean onSingleTapUp(MotionEvent e) {

return false;

}

}

赞助本站

人工智能实验室

相关热词: 手势 切换

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港