您的位置:首页 > 其它

Hotseat栏增加滑动功能

2015-11-16 11:39 429 查看
客户需求:在滑动hotseta栏实现调节屏幕亮度功能。

定位到文件:package/apps/trebuchet/src/com/android/launcher3/Hotseat.java

增加全局变量:

private GestureDetector gestureDetector;
private static final int RIGHT = 0;
private static final int LEFT = 1;


监听 

private GestureDetector.OnGestureListener onGestureListener =
new GestureDetector.SimpleOnGestureListener() {

@Override
public boolean onDown(MotionEvent e) {
Log.i("TAG","onDown");
return false;
}

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
float x = e2.getX() - e1.getX();
float y = e2.getY() - e1.getY();
Log.i("TAG","x = "+x );
if (x > 0) {
doResult(RIGHT);  //向右滑,调亮
} else if (x < 0) {
doResult(LEFT);  //向左滑,调暗
}
Log.i("TAG","onScroll"
4000
);
return false;
}

};

public void doResult(int action) {

switch (action) {
case RIGHT:
System.out.println("go right");
//与系统自带调节亮度实现方法相同,具体实现 参考:/framework/base/packages/systemui/com/android/systemui/settings/BrightnessController.java
break;

case LEFT:
System.out.println("go left");
//与系统自带调节亮度实现方法相同,具体实现 参考:/framework/base/packages/systemui/com/android/systemui/settings/BrightnessController.java


在构造方法中初始化onGestureListener

public Hotseat(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);

Resources r = context.getResources();
mTransposeLayoutWithOrientation =
r.getBoolean(R.bool.hotseat_transpose_layout_with_orientation);
mIsLandscape = context.getResources().getConfiguration().orientation ==
Configuration.ORIENTATION_LANDSCAPE;
gestureDetector = new GestureDetector(context,onGestureListener);  //初始化 listener
}


还有最重要一点:

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// We don't want any clicks to go through to the hotseat unless the workspace is in
// the normal state.
if (mLauncher.getWorkspace().workspaceInModalState()) {
return true;
}
/*拦截 具体原理参考 上一篇文章 Android中的dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()*/
if (gestureDetector.onTouchEvent(ev)){
return true;
}
return false;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hotseat 滑动