av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

android控件實現單擊拖動效果

瀏覽:2日期:2022-09-21 08:15:28

本文實例為大家分享了android控件實現單擊拖動效果的具體代碼,供大家參考,具體內容如下

分析

setOnClickListener

setOnClickListener 可以接收控件的單擊動作,無返回值

要想拖動控件,就要利用 setOnTouchListener 自己定義了

setOnTouchListener

通過按下時的坐標和移動時的坐標之間的差值,來計算移動的距離,然后更改控件的位置以達到拖動的目的因 Touch 事件執行完成后如果返回false則會繼續執行單擊事件,不是我們想要的。如果直接返回true代表處理完了事件,不再執行單擊事件,也不是我們想要的。這時候就要判斷什么時候返回true,什么時候返回false,以達到同時實現單擊 + 拖動的目的

實例代碼

綁定事件

//綁定拖動事件floatView.floatMenuIcon.setOnTouchListener(touchListener);//綁定單擊事件,此處為lambda表達式floatView.floatMenuIcon.setOnClickListener(view -> { EventBus.getDefault().post(AccessibilityService.GLOBAL_ACTION_BACK);});

重寫onTouchListener

注意事項

ACTION_UP為手指抬起時執行的事件,單擊事件的判斷放在此處,如果按下時的坐標和抬起時的坐標相差不大,我們視作單擊動作,后期如果需要處理長按動作或雙擊動作,道理差不多。

完整代碼

private final View.OnTouchListener touchListener = new View.OnTouchListener() { //記錄初使按下時的坐標,會因為拖動而改變 private float dX; private float dY; //記錄初使按下時的坐標,不因拖動而改變 private float sX; private float sY; @SuppressLint('ClickableViewAccessibility') @Override public boolean onTouch(View view, MotionEvent motionEvent) { switch (motionEvent.getAction()) { case MotionEvent.ACTION_DOWN: dX = motionEvent.getRawX(); dY = motionEvent.getRawY(); sX = motionEvent.getRawX(); sY = motionEvent.getRawY(); break; case MotionEvent.ACTION_MOVE: //拖動事件,為了能夠實時拖動,而非抬起后再移動,所以處理代碼放到ACTION_MOVE中 float nX = (int) motionEvent.getRawX(); float nY = (int) motionEvent.getRawY(); float cW = nX - dX; float cH = nY - dY; dX = nX; dY = nY; layoutParams.x = (int) (layoutParams.x + cW); layoutParams.y = (int) (layoutParams.y + cH); windowManager.updateViewLayout(mView, layoutParams); break; case MotionEvent.ACTION_UP: //如果抬起時的位置和按下時的位置大致相同視作單擊事件 //間隔值可能為負值,所以要取絕對值進行比較 if (Math.abs(motionEvent.getRawX() - sX) > 6 && Math.abs(motionEvent.getRawY() - sY) > 6) { return true; } break; } return false; }};

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
主站蜘蛛池模板: 国产福利视频 | 日韩专区中文字幕 | 午夜久草| 中文字幕二区三区 | 日干夜干 | 久久亚洲国产精品日日av夜夜 | 欧美国产视频 | 91九色在线观看 | 久久9久 | 国产精品一区二区三区四区 | 久久蜜桃av一区二区天堂 | 亚洲男人天堂网 | 91国内精品久久 | 国产成人精品免费视频大全最热 | 亚洲国产成人精品久久久国产成人一区 | 青久草视频 | 免费看黄色国产 | 日韩在线中文字幕 | 男人天堂av网| a看片| 久久久精品视 | 亚洲国产一区二区视频 | 中文在线一区 | 一级特黄色毛片 | 日韩欧美精品一区 | 国产精品久久久爽爽爽麻豆色哟哟 | 欧美中文字幕 | 中文字幕精品一区二区三区精品 | 狠狠操狠狠干 | 成人免费视频网址 | 日韩电影一区 | 亚洲综合小视频 | 欧美日高清视频 | 国产精品毛片无码 | 亚洲精品一区二区三区蜜桃久 | 中文字幕亚洲欧美日韩在线不卡 | 国产精品久久久久久久久久久久冷 | 91成人免费观看 | 欧美一级大片免费观看 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 精品美女在线观看视频在线观看 |