您的位置:首页 > 移动开发 > Android开发

Android 滑动操作的使用

2015-10-27 00:00 417 查看
需求:在制作设置时,可能你需要滑动事件进行操作

首先:因为很多个activity都要用到这个功能,所以定义出一个基类,进行滑动操作的封装

package com.zaizai.safty;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

/**
* Created by zaizai on 2015/10/27.
*/
public abstract class BaseSetupActivity extends Activity {
private static final String TAG = "BaseSetupActivity";
/*手势识别器*/
private GestureDetector gestureDetector;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*实例化手势识别器*/
gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
/*重写滑动方法*/

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
/*当手指在上面滑动时回调 e1为第一个接触点 e2为离开点*/

/*屏蔽X轴滑速过慢*/
if (Math.abs(velocityX) < 400) {
Toast.makeText(getApplicationContext(), "横向滑动速度过慢", Toast.LENGTH_LONG).show();
return true;
}
/*屏蔽从上往下滑*/
if (Math.abs((e2.getRawY() - e1.getRawY())) > 800) {
Toast.makeText(getApplicationContext(), "只能横着滑", Toast.LENGTH_LONG).show();
return true;
}
if (e1.getRawX() - e2.getRawX() > 200) {
/*向左滑*/
showNext();
Log.i(TAG, "从右往左滑");
return true;
} else if (e2.getRawX() - e1.getRawX() > 200) {
/*向右滑*/
Log.i(TAG, "从左往右滑");
showPrecede();
return true;

}
return super.onFling(e1, e2, velocityX, velocityY);
}
});
}
/*使用手势识别器*/

@Override
public boolean onTouchEvent(MotionEvent event) {
/*传递滑动时间*/
gestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}

public abstract void showPrecede();

public abstract void showNext();

/**
* 上一步
*
* @param view
*/
public void precede(View view) {
showPrecede();

}

/**
* 点击下一步
*
* @param view
*/
public void next(View view) {
showNext();
}

}

如上,定义了两个抽象函数,让使用该功能的activity自己去实现

继承该类的子类便可实现滑动操作


package com.zaizai.safty;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

/**
* Created by zaizai on 2015/10/26.
*/
public class SetupGuideActivity1 extends BaseSetupActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setup_guide1);
}

public void showNext() {
Intent intent = new Intent(this, SetupGuideActivity2.class);
startActivity(intent);
/*要求在finish()或者startactivity 方法后面执行*/
overridePendingTransition(R.anim.translate_in, R.anim
3ff0
.translate_out);
}

public void showPrecede() {
Intent intent = new Intent(this, SetupGuideActivity.class);
startActivity(intent);
this.finish();
overridePendingTransition(R.anim.translate_precede_in, R.anim.translate_precede_out);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: