欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實現(xiàn)拖動效果的兩種方法

 更新時間:2018年04月26日 15:49:02   作者:u013772458  
這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)拖動效果的兩種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

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;//這里根據(jù)項目需要選擇false與true
      }
    });
  }

可是我的項目本身是有涂鴉的界面,還有很多復(fù)雜的事件,發(fā)現(xiàn)會有很奇怪的效果,抖動很厲害,而且時不時回到原來的位置,后來發(fā)現(xiàn)這個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;
      }
    });
  }

效果如下圖:

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

以上所述是小編給大家介紹Android實現(xiàn)拖動效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Android查看文件夾大小以及刪除文件夾的工具類

    Android查看文件夾大小以及刪除文件夾的工具類

    這篇文章主要介紹了Android查看文件夾大小以及刪除文件夾的工具類,Android計算文件夾大小和刪除目錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android動畫之漸變動畫(Tween Animation)詳解 (漸變、縮放、位移、旋轉(zhuǎn))

    Android動畫之漸變動畫(Tween Animation)詳解 (漸變、縮放、位移、旋轉(zhuǎn))

    這篇文章主要介紹了Android動畫之漸變動畫(Tween Animation)用法,結(jié)合實例形式詳細(xì)分析了Android漸變動畫Tween Animation實現(xiàn)漸變,縮放,位移,旋轉(zhuǎn)等技巧,需要的朋友可以參考下
    2016-01-01
  • Android屬性動畫特點(diǎn)詳解

    Android屬性動畫特點(diǎn)詳解

    這篇文章主要為大家詳細(xì)介紹了Android屬性動畫特點(diǎn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • IOS開發(fā)向右滑動返回前一個頁面功能(demo)

    IOS開發(fā)向右滑動返回前一個頁面功能(demo)

    本文給大家介紹使用android實現(xiàn)向右滑動返回一個頁面的功能,大家都知道在ios7中,蘋果的原生態(tài)應(yīng)用幾乎都能夠通過向右滑動來返回到前一個頁面,這樣可以避免用戶在單手操作時用大拇指去點(diǎn)擊那個遙遠(yuǎn)的返回鍵,下面小編就給帶來了實現(xiàn)代碼,有需要的朋友可以參考下
    2016-06-06
  • Android 加載assets中的資源文件實例代碼

    Android 加載assets中的資源文件實例代碼

    這篇文章主要介紹了Android 加載assets中的資源文件實例代碼的相關(guān)資料,這里附有實例代碼,需要的朋友可以參考下
    2017-01-01
  • 淺談Glide緩存key的問題

    淺談Glide緩存key的問題

    這篇文章主要介紹了淺談Glide緩存key的問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Android?APP瘦身shrinkResources使用問題詳解

    Android?APP瘦身shrinkResources使用問題詳解

    這篇文章主要為大家介紹了Android?APP瘦身shrinkResources使用問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Android 類似UC瀏覽器的效果:向上滑動地址欄隱藏功能

    Android 類似UC瀏覽器的效果:向上滑動地址欄隱藏功能

    這篇文章主要介紹了Android 類似UC瀏覽器的效果:向上滑動地址欄隱藏功能,需要的朋友可以參考下
    2017-12-12
  • 你該知道的Gradle配置知識總結(jié)

    你該知道的Gradle配置知識總結(jié)

    這篇文章主要給大家介紹了關(guān)于Gradle配置的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考學(xué)習(xí),下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • android實現(xiàn)計步功能初探

    android實現(xiàn)計步功能初探

    這篇文章主要介紹了android實現(xiàn)計步功能初探,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12

最新評論