【安卓筆記】VelocityTracker使用示例
來源:程序員人生 發(fā)布時間:2014-12-16 08:56:09 閱讀次數(shù):3406次
VelocityTracker可以獲得觸屏事件的速率。
使用步驟:
1.獲得VelocityTracker實例:
VelocityTracker mVelocityTracker = VelocityTracker.obtain();
2.將MotionEvent事件納入到VelocityTracker中:mVelocityTracker.addMovement(event);
3.計算瞬時速度:mVelocityTracker.computeCurrentVelocity(units,maxVelocity);
4.獲得xy方向上的速度:float vX = mVelocityTracker.getXVelocity(pointId);
float vY = mVelocityTracker.getYVelocity(pointId);
5.回收VelocityTracker:mVelocityTracker.clear();
mVelocityTracker.recycle();
使用示例:
package com.example.velocitytrackerdemo;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.ViewConfiguration;
public class MainActivity extends Activity
{
private static final String TAG = "MainActivity";
private VelocityTracker mVelocityTracker;
private int mMaxFlingVelocity;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMaxFlingVelocity = ViewConfiguration.get(this).getScaledMaximumFlingVelocity();
}
/**
* 獲得速度追蹤器
* @return
*/
private VelocityTracker getVelocityTracker()
{
if(mVelocityTracker == null)
{
mVelocityTracker = VelocityTracker.obtain();
}
return mVelocityTracker;
}
/**
* 回收速度追蹤器
*/
private void recycleVelocityTracker()
{
if(mVelocityTracker != null)
{
mVelocityTracker.clear();
mVelocityTracker.recycle();
mVelocityTracker = null;
}
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
//1.獲得速度追蹤器
getVelocityTracker();
//2.將當前事件納入到追蹤器中
mVelocityTracker.addMovement(event);
int pointId = ⑴;
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
Log.i(TAG,"ACTION_DOWN");
pointId = event.getPointerId(0);
break;
case MotionEvent.ACTION_MOVE:
Log.i(TAG,"ACTION_MOVE");
//3.計算當前速度
mVelocityTracker.computeCurrentVelocity(1000,mMaxFlingVelocity);
//獲得x y方向上的速度
float vX = mVelocityTracker.getXVelocity(pointId);
float vY = mVelocityTracker.getYVelocity(pointId);
Log.i(TAG,"vX = "+vX+",vY = "+vY);
break;
case MotionEvent.ACTION_UP:
Log.i(TAG,"ACTION_UP");
//4.回收速度追蹤器
recycleVelocityTracker();
break;
default:
break;
}
return super.onTouchEvent(event);
}
}
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈