Android 滑动操作的使用
2015-10-27 00:00
417 查看
需求:在制作设置时,可能你需要滑动事件进行操作
首先:因为很多个activity都要用到这个功能,所以定义出一个基类,进行滑动操作的封装
首先:因为很多个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); } }
相关文章推荐
- Android 监听开机完成广播,完成监听SIM卡功能
- android加载框效果《IT蓝豹》
- Android:数据持久化(2/2) SQLite
- Android:Activity生命周期
- Android:BroadcastReceiver
- ANDROID源码
- android自定义theme
- android系统自带的主题
- Android Fragment 真正的完全解析(下)
- 利用Cydia Substrate进行Android HOOK(二)
- Android Fragment 真正的完全解析(上)
- Android应用宣传页和自定义页卡指示器
- Android_10_C调用java
- Json数据与Json在android开发中的应用
- android 58 jvm和dvm的区别(Dalvil VM)
- Android Activity之间传递对象及对象数组
- android群英传读书笔记---自定义ViewGroup
- Android中内容观察者的使用---- ContentObserver类详解
- android-----(Content Provider 内容提供者组件)
- 即时聊天IM之四 Android客户端IM帮助类编写