1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      Android如何實(shí)現(xiàn)懸浮可拖拽的Button-創(chuàng)新互聯(lián)

      這篇文章給大家分享的是有關(guān)Android如何實(shí)現(xiàn)懸浮可拖拽的Button的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

      創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供賈汪網(wǎng)站建設(shè)、賈汪做網(wǎng)站、賈汪網(wǎng)站設(shè)計(jì)、賈汪網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、賈汪企業(yè)網(wǎng)站模板建站服務(wù),十載賈汪做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

      簡介

      最近,因?yàn)轫?xiàng)目需要,需要制作一個(gè)界面上可拖拽的按鈕,網(wǎng)上也有多實(shí)例,看了下大部分都是示例不全或講解不清晰,效果圖也不明顯,借此自己記錄一番自己的實(shí)現(xiàn)方案,以備不時(shí)之需,同時(shí)也為廣大學(xué)者可以直接通過拷貝方式完成項(xiàng)目所需。

      核心代碼實(shí)現(xiàn)

      1DraggingButton 實(shí)現(xiàn)

      public class DraggingButton extends android.support.v7.widget.AppCompatButton {   private int lastX = 0;  private int lastY = 0;  private int beginX = 0;  private int beginY = 0;   private int screenWidth = 720;  private int screenHeight = 1280;    public DraggingButton(Context context) {    this(context, null);  }   public DraggingButton(Context context, @Nullable AttributeSet attrs) {    this(context, attrs, 0);  }   public DraggingButton(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {    super(context, attrs, defStyleAttr);     initData(context);  }   private void initData(Context context){    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);    DisplayMetrics dm = new DisplayMetrics();    wm.getDefaultDisplay().getMetrics(dm);    screenWidth = dm.widthPixels;    screenHeight = dm.heightPixels;  }   @Override  public boolean onTouchEvent(MotionEvent event)  {     switch (event.getAction())    {      case MotionEvent.ACTION_DOWN:        lastX = (int) event.getRawX();   // 觸摸點(diǎn)與屏幕左邊的距離        lastY = (int) event.getRawY();   // 觸摸點(diǎn)與屏幕上邊的距離        beginX = lastX;        beginY = lastY;        break;      case MotionEvent.ACTION_MOVE:         int dx =(int)event.getRawX() - lastX;    // x軸拖動(dòng)的絕對(duì)距離        int dy =(int)event.getRawY() - lastY;    // y軸拖動(dòng)的絕對(duì)距離         // getLeft(): 子View的左邊界到父View的左邊界的距離, getRight():子View的右邊界到父View的左邊界的距離        // 如下幾個(gè)數(shù)據(jù)表示view應(yīng)該在布局中的位置        int left = getLeft() + dx;        int top = getTop() + dy;        int right = getRight() + dx;        int bottom = getBottom() + dy;        if(left < 0){          left = 0;          right = left + getWidth();        }        if(right > screenWidth){          right = screenWidth;          left = right - getWidth();        }        if(top < 0){          top = 0;          bottom = top + getHeight();        }        if(bottom>screenHeight){          bottom = screenHeight;          top = bottom - getHeight();        }        layout(left, top, right, bottom);        lastX = (int) event.getRawX();        lastY = (int) event.getRawY();        break;      case MotionEvent.ACTION_UP:        // 解決拖拽的時(shí)候松手點(diǎn)擊事件觸發(fā)        if (Math.abs(lastX - beginX) < 10 && Math.abs(lastY - beginY) < 10){          return super.onTouchEvent(event);        }else{          setPressed(false);          return true;        }      default:        break;    }    return super.onTouchEvent(event);  }}

      核心代碼已經(jīng)奉獻(xiàn),通過自定義的DraggingButton即可實(shí)現(xiàn)可拖拽功能,具體原理主要在于onTouchEvent和layout兩個(gè)函數(shù)的使用,具體細(xì)節(jié)不在講述,代碼注釋比較清晰。

      舉個(gè)栗子

      activity中的布局

        

      樣式 drag_button_bg.xml

                                                                              

      activity 中的代碼

      private DraggingButton mDraggintView;mDraggintView = (DraggingButton) findViewById(R.id.tv_dragging);  mDraggintView.setOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View v) {    Toast.makeText(FloatingActionBtnTestActivity.this, "click", Toast.LENGTH_SHORT).show();   }  });

      感謝各位的閱讀!關(guān)于“Android如何實(shí)現(xiàn)懸浮可拖拽的Button”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


      本文名稱:Android如何實(shí)現(xiàn)懸浮可拖拽的Button-創(chuàng)新互聯(lián)
      URL地址:http://www.ef60e0e.cn/article/deoieh.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        巴马| 合川市| 衡山县| 陵水| 普安县| 嵊州市| 房产| 临清市| 彰化县| 曲松县| 大丰市| 随州市| 来宾市| 长沙县| 永定县| 兰西县| 阿城市| 新沂市| 安达市| 申扎县| 定陶县| 托里县| 桦川县| 宿松县| 启东市| 蚌埠市| 衡东县| 喀喇| 闻喜县| 南投县| 萍乡市| 镇原县| 涞水县| 宕昌县| 平山县| 江西省| 凌源市| 四子王旗| 房山区| 巨鹿县| 静乐县|