Hotseat栏增加滑动功能

来源:互联网 发布:淘宝图片空间手机端 编辑:程序博客网 时间:2024/05/21 09:30

客户需求:在滑动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() {  @Overridepublic 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");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;    }





0 0
原创粉丝点击