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
      相關咨詢
      選擇下列產品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關閉右側工具欄

      新聞中心

      這里有您想知道的互聯(lián)網營銷解決方案
      Android實現拖動效果的兩種方法

      因為最近項目的需要,需要實現一個拖動效果,看了一下網上剛好有這種拖動效果的demo,代碼大概如下:

      十載的晉江網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網營銷的優(yōu)勢是能夠根據用戶設備顯示端的尺寸不同,自動調整晉江建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)建站從事“晉江網站設計”,“晉江網站推廣”以來,每個客戶項目都認真落實執(zhí)行。

      private void initListener(){
          screenWidth = getScreenWidth(this);//獲取屏幕寬度
          screenHeight = getScreenHeight(this) - getStatusHeight(MainActivity.this);//屏幕高度-狀態(tài)欄
          testTv.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
              switch (event.getAction()) {
      
                case MotionEvent.ACTION_DOWN:
                  lastX = (int) event.getRawX();
                  lastY = (int) event.getRawY();
                  break;
      
                case MotionEvent.ACTION_MOVE:
                  int dx = (int) event.getRawX() - lastX;
                  int dy = (int) event.getRawY() - lastY;
      
                  int top = v.getTop() + dy;
      
      
                  int left = v.getLeft() + dx;
      
      
                  if (top <= 0) {
                    top = 0;
                  }
                  if (top >= screenHeight - testTv.getHeight() ) {
                    top = screenHeight - testTv.getHeight();
                  }
                  if (left >= screenWidth - testTv.getWidth()) {
                    left = screenWidth - testTv.getWidth();
                  }
      
                  if (left <= 0) {
                    left = 0;
                  }
      
      
                  v.layout(left, top, left+v.getWidth(), top+v.getHeight());
      
                  v.postInvalidate();
      
                  lastX = (int) event.getRawX();
                  lastY = (int) event.getRawY();
      
              break;
              case MotionEvent.ACTION_UP:
              break;
      
              }
              return true;//這里根據項目需要選擇false與true
            }
          });
        }
      
      

      可是我的項目本身是有涂鴉的界面,還有很多復雜的事件,發(fā)現會有很奇怪的效果,抖動很厲害,而且時不時回到原來的位置,后來發(fā)現這個v.layout(left, top, left+v.getWidth(), top+v.getHeight());可能不適合項目的需求,所以我想了另一種解法。代碼如下:

       private void initListener(){
          screenWidth = getScreenWidth(this);//獲取屏幕寬度
          screenHeight = getScreenHeight(this) - getStatusHeight(MainActivity.this);//屏幕高度-狀態(tài)欄
          testTv.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
              switch (event.getAction()) {
      
                case MotionEvent.ACTION_DOWN:
                  lastX = (int) event.getRawX();
                  lastY = (int) event.getRawY();
                  break;
      
                case MotionEvent.ACTION_MOVE:
                  int dx = (int) event.getRawX() - lastX;
                  int dy = (int) event.getRawY() - lastY;
      
                  int top = v.getTop() + dy;
      
      
                  int left = v.getLeft() + dx;
      
      
                  if (top <= 0) {
                    top = 0;
                  }
                  if (top >= screenHeight - testTv.getHeight() ) {
                    top = screenHeight - testTv.getHeight();
                  }
                  if (left >= screenWidth - testTv.getWidth()) {
                    left = screenWidth - testTv.getWidth();
                  }
      
                  if (left <= 0) {
                    left = 0;
                  }
      
                  RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(v.getWidth(), v.getHeight());
                  param.leftMargin = left;
                  param.topMargin = top;
                  v.setLayoutParams(param);
      //            v.layout(left, top, left+v.getWidth(), top+v.getHeight());
      
                  v.postInvalidate();
      
                  lastX = (int) event.getRawX();
                  lastY = (int) event.getRawY();
      
              break;
              case MotionEvent.ACTION_UP:
              break;
      
              }
              return true;
            }
          });
        }

      效果如下圖:

      Android實現拖動效果的兩種方法

      覺得可以了,不過要注意一些事項:鍵盤彈出需要自己處理一下(比如處理成彈出鍵盤就不能移動這些,不然會變形的),我覺得這種寫法可以應用于各種復雜的場景。好了,今天一些項目問題總結就到這里了,希望對大家有幫助,代碼也上傳了,地址如下:Android實現拖動效果

      以上所述是小編給大家介紹Android實現拖動效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對創(chuàng)新互聯(lián)網站的支持!


      當前文章:Android實現拖動效果的兩種方法
      瀏覽路徑:http://www.ef60e0e.cn/article/gepdic.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>

        白朗县| 自贡市| 吴桥县| 富锦市| 南康市| 惠州市| 图们市| 股票| 蕲春县| 锡林浩特市| 武邑县| 永修县| 常熟市| 藁城市| 邻水| 栖霞市| 泽州县| 鄯善县| 浦北县| 通海县| 连江县| 西林县| 百色市| 正定县| 左权县| 鱼台县| 旺苍县| 卢龙县| 唐海县| 东兴市| 白城市| 松桃| 商城县| 通许县| 达孜县| 申扎县| 新营市| 勐海县| 扶绥县| 泽州县| 永川市|