最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android控件實現(xiàn)單擊拖動效果

 更新時間:2021年01月28日 10:15:02   作者:曲幽  
這篇文章主要為大家詳細(xì)介紹了android控件實現(xiàn)單擊拖動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

分析

setOnClickListener

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

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

setOnTouchListener

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

實例代碼

綁定事件

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

重寫onTouchListener

注意事項

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

完整代碼

private final View.OnTouchListener touchListener = new View.OnTouchListener() {
 //記錄初使按下時的坐標(biāo),會因為拖動而改變
 private float dX;
 private float dY;
 //記錄初使按下時的坐標(biāo),不因拖動而改變
 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:
    //拖動事件,為了能夠?qū)崟r拖動,而非抬起后再移動,所以處理代碼放到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:
    //如果抬起時的位置和按下時的位置大致相同視作單擊事件
    //間隔值可能為負(fù)值,所以要取絕對值進(jìn)行比較
    if (Math.abs(motionEvent.getRawX() - sX) > 6 && Math.abs(motionEvent.getRawY() - sY) > 6) {
     return true;
    }
    break;
  }
  return false;
 }
};

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android代碼塊執(zhí)行順序分析總結(jié)

    Android代碼塊執(zhí)行順序分析總結(jié)

    本篇文章主要介紹了Android代碼塊執(zhí)行順序分析總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • AOSP源碼下載及問題小結(jié)

    AOSP源碼下載及問題小結(jié)

    這篇文章主要介紹了AOSP源碼下載,包括源碼下載示例,文中給大家介紹了配置下載方法,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • Android實現(xiàn)生成二維碼并保存到相冊

    Android實現(xiàn)生成二維碼并保存到相冊

    這篇文章主要介紹了如何利用Android實現(xiàn)二維碼的生成,并且保存到本地相冊。文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編學(xué)習(xí)一下
    2022-04-04
  • Android中處理apple-touch-icon詳解

    Android中處理apple-touch-icon詳解

    這篇文章主要介紹了Android中處理apple-touch-icon詳解,在Android如果想把網(wǎng)頁放到桌面上,也需要使用Touch Icon圖標(biāo)才可實現(xiàn),本文即講解Android中處理Touch Icon的一些知識,需要的朋友可以參考下
    2015-01-01
  • 談?wù)凙ndroid開發(fā)之RecyclerView的使用全解

    談?wù)凙ndroid開發(fā)之RecyclerView的使用全解

    這篇文章主要介紹了談?wù)凙ndroid開發(fā)之RecyclerView的使用全解,非常具有實用價值,需要的朋友可以參考下。
    2016-12-12
  • Android開發(fā)事件處理的代碼如何寫手摸手教程

    Android開發(fā)事件處理的代碼如何寫手摸手教程

    這篇文章主要為大家介紹了Android開發(fā)事件處理的代碼如何寫手摸手教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Android 軟引用和弱引用詳解及實例代碼

    Android 軟引用和弱引用詳解及實例代碼

    這篇文章主要介紹了Android 軟引用和弱引用詳解的相關(guān)資料,并附實現(xiàn)實例代碼,需要的朋友可以參考下
    2016-11-11
  • Android?WebView開發(fā)之自定義WebView工具框

    Android?WebView開發(fā)之自定義WebView工具框

    在WebView頁面長按時會彈出一個復(fù)制框,有的時候里面的item不是我們想要,這個時候我們就可以自定義一個工具框。本文就將介紹如何通過WebView自定義工具框,需要的朋友可以參考一下
    2021-12-12
  • 正確在Flutter中添加webview實現(xiàn)詳解

    正確在Flutter中添加webview實現(xiàn)詳解

    這篇文章主要為大家介紹了正確在Flutter中添加webview實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • android不同activity之間共享數(shù)據(jù)解決方法

    android不同activity之間共享數(shù)據(jù)解決方法

    最近做局域網(wǎng)socket連接問題,要在多個activity之間公用一個socket連接,就在網(wǎng)上搜了下資料,感覺還是application方法好用,帖出來需要的朋友可以參考下
    2012-11-11

最新評論

迁西县| 凌海市| 承德县| 普宁市| 黔西县| 重庆市| 凤台县| 三江| 鄂伦春自治旗| 白城市| 奇台县| 奉新县| 伽师县| 庆城县| 腾冲县| 呼玛县| 南和县| 繁昌县| 上饶县| 通江县| 瑞丽市| 永年县| 呼和浩特市| 嵩明县| 东乡族自治县| 墨玉县| 修水县| 玉林市| 永川市| 峨眉山市| 阳曲县| 象山县| 涿鹿县| 镇远县| 宁津县| 通江县| 新田县| 江口县| 光山县| 隆化县| 茶陵县|