Android ViewFlipper 手势触摸案例
来源:互联网 发布:上虞区干部网络教育 编辑:程序博客网 时间:2024/04/28 17:52
广大博友,看过后帮忙顶顶,谢谢大家!!!
转载请注明: http://blog.csdn.net/richway2010/archive/2011/06/29/6574987.aspx
博主:各位博友,网友们,大家网上好!欢迎光临本博客。欢迎多多交流,多提意见,互相学习,互相进步,我们的口号是:好好学习,天天向上。】
直接进入主题,先来看看效果:
从右往左触摸屏幕:
实现:main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout android:layout_height="fill_parent"
- android:layout_width="fill_parent"
- android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <ViewFlipper android:id="@+id/flipper"
- android:layout_height="fill_parent" android:layout_width="fill_parent">
- <include android:id="@+id/firstlayout" layout="@layout/left"/>
- <include android:id="@+id/secondlayout" layout="@layout/center"/>
- <include android:id="@+id/thirdlayout" layout="@layout/right"/>
- </ViewFlipper>
- </LinearLayout>
center.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout android:gravity="center_vertical"
- android:layout_height="fill_parent"
- android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
- <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/a3">
- </ImageView></LinearLayout>
left.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout android:gravity="center_vertical"
- android:layout_height="fill_parent" android:layout_width="fill_parent"
- xmlns:android="http://schemas.android.com/apk/res/android">
- <ImageView android:layout_height="wrap_content"
- android:layout_width="wrap_content" android:src="@drawable/a2">
- </ImageView>
- </LinearLayout>
right.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout android:gravity="center_vertical"
- android:layout_height="fill_parent" android:layout_width="fill_parent"
- xmlns:android="http://schemas.android.com/apk/res/android">
- <ImageView android:layout_height="wrap_content"
- android:layout_width="wrap_content" android:src="@drawable/a1"></ImageView>
- </LinearLayout>
主配置文件:AndroidManifest.xml
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="org.flipper"
- android:versionCode="1"
- android:versionName="1.0">
- <uses-sdk android:minSdkVersion="8" />
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <activity android:name=".ViewFlipperDemoActivity"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- </manifest>
主类:ViewFlipperDemoActivity.java
- 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.View.OnTouchListener;
- import android.view.animation.AccelerateInterpolator;
- import android.view.animation.Animation;
- import android.view.animation.TranslateAnimation;
- import android.widget.ViewFlipper;
- public class ViewFlipperDemoActivity extends Activity implements OnGestureListener,OnTouchListener{
- private ViewFlipper mFlipper;
- GestureDetector mGestureDetector;
- private int mCurrentLayoutState;
- private static final int FLING_MIN_DISTANCE = 120;
- private static final int FLING_MIN_VELOCITY = 240;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mFlipper = (ViewFlipper) findViewById(R.id.flipper);
- //注册一个用于手势识别的类
- mGestureDetector = new GestureDetector(this);
- //给mFlipper设置一个listener
- mFlipper.setOnTouchListener(this);
- mCurrentLayoutState = 0;
- //允许长按住ViewFlipper,这样才能识别拖动等手势
- mFlipper.setLongClickable(true);
- /**
- * 定义从右侧进入的动画效果
- * @return
- */
- protected Animation inFromRightAnimation() {
- Animation inFromRight = new TranslateAnimation(
- Animation.RELATIVE_TO_PARENT, +1.0f,
- Animation.RELATIVE_TO_PARENT, 0.0f,
- Animation.RELATIVE_TO_PARENT, 0.0f,
- Animation.RELATIVE_TO_PARENT, 0.0f);
- inFromRight.setDuration(500);
- inFromRight.setInterpolator(new AccelerateInterpolator());
- return inFromRight;
- }
- /**
- * 定义从左侧退出的动画效果
- * @return
- */
- protected Animation outToLeftAnimation() {
- Animation outtoLeft = new TranslateAnimation(
- Animation.RELATIVE_TO_PARENT, 0.0f,
- Animation.RELATIVE_TO_PARENT, -1.0f,
- Animation.RELATIVE_TO_PARENT, 0.0f,
- Animation.RELATIVE_TO_PARENT, 0.0f);
- outtoLeft.setDuration(500);
- outtoLeft.setInterpolator(new AccelerateInterpolator());
- return outtoLeft;
- }
- /**
- * 定义从左侧进入的动画效果
- * @return
- */
- protected Animation inFromLeftAnimation() {
- Animation inFromLeft = new TranslateAnimation(
- Animation.RELATIVE_TO_PARENT, -1.0f,
- Animation.RELATIVE_TO_PARENT, 0.0f,
- Animation.RELATIVE_TO_PARENT, 0.0f,
- Animation.RELATIVE_TO_PARENT, 0.0f);
- inFromLeft.setDuration(500);
- inFromLeft.setInterpolator(new AccelerateInterpolator());
- return inFromLeft;
- }
- /**
- * 定义从右侧退出时的动画效果
- * @return
- */
- protected Animation outToRightAnimation() {
- Animation outtoRight = new TranslateAnimation(
- Animation.RELATIVE_TO_PARENT, 0.0f,
- Animation.RELATIVE_TO_PARENT, +1.0f,
- Animation.RELATIVE_TO_PARENT, 0.0f,
- Animation.RELATIVE_TO_PARENT, 0.0f);
- outtoRight.setDuration(500);
- outtoRight.setInterpolator(new AccelerateInterpolator());
- return outtoRight;
- }
- public boolean onDown(MotionEvent e) {
- // TODO Auto-generated method stub
- return false;
- }
- /*
- * 用户按下触摸屏、快速移动后松开即触发这个事件
- * e1:第1个ACTION_DOWN MotionEvent
- * e2:最后一个ACTION_MOVE MotionEvent
- * velocityX:X轴上的移动速度,像素/秒
- * velocityY:Y轴上的移动速度,像素/秒
- * 触发条件 :
- * X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒
- */
- public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
- float velocityY) {
- if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE
- && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
- // 当像左侧滑动的时候
- //设置View进入屏幕时候使用的动画
- mFlipper.setInAnimation(inFromRightAnimation());
- //设置View退出屏幕时候使用的动画
- mFlipper.setOutAnimation(outToLeftAnimation());
- mFlipper.showNext();
- } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE
- && Math.abs(velocityX) > FLING_MIN_VELOCITY) {
- // 当像右侧滑动的时候
- mFlipper.setInAnimation(inFromLeftAnimation());
- mFlipper.setOutAnimation(outToRightAnimation());
- mFlipper.showPrevious();
- }
- return false;
- }
- public boolean onTouch(View v, MotionEvent event) {
- // 将触屏事件交给手势识别类去处理
- return mGestureDetector.onTouchEvent(event);
- }
- }
希望对你有帮助,谢谢
- Android ViewFlipper 手势触摸案例
- Android ViewFlipper 手势触摸案例
- android手势识别ViewFlipper触摸动画
- android手势识别ViewFlipper触摸动画
- Android手势识别ViewFlipper触摸动画
- Android手势识别ViewFlipper触摸动画
- Android手势识别ViewFlipper触摸动画
- Android手势识别ViewFlipper触摸动画
- android手势识别ViewFlipper触摸动画
- Android手势识别ViewFlipper触摸动画
- 手势识别ViewFlipper触摸动画
- Android ViewFlipper触摸动画
- Android ViewFlipper触摸动画
- Android ViewFlipper触摸动画
- Android手势使用ViewFlipper
- Android 手势(ViewFlipper)(手势检测)
- Android 手势&触摸事件
- Android 手势&触摸事件
- Android利用ViewFlipper实现屏幕切换动画效果
- 武大校长的一封信
- 关于static函数的用法和全局变量在工程中的引用
- crypt的使用
- 链接putty的心得
- Android ViewFlipper 手势触摸案例
- 安装vmware的心得
- comboBox 输入状态变成 readonly 方式;TextBox 只读时的效果
- 耶鲁大学校长:中国大学是人类文明史上最大的笑话
- 深入浅出Cocoa之类与对象
- 中国网络未来的发展趋势
- .c心得
- “windows无法完成格式化”解决办法
- [Cocoa]深入浅出Cocoa 之动态创建类