2016-09-14 149 views
0

我有一個自定義ImageView和一個Button,點擊Button和上下移動調整大小ImageView但它運行不順利。Android調整大小視圖不平滑

我創建了一個單獨的線程來平滑用戶移動,但顯然它不能使任何GUI更改..我試圖找到一種方式來使用Animation,但我沒有看到一種方法來連續更新目標高度。

工作代碼
按鈕onTouchListener:

// resize button start location 
private PointF startResize = new PointF(); 

    ImageView resize = (ImageView) findViewById(R.id.resize); 
    resize.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      switch (event.getAction() & MotionEvent.ACTION_MASK) { 
       case MotionEvent.ACTION_DOWN: 

        // save first touch location 
        startResize.set(boardImage.getHeight(), event.getY()); 
        break; 
       case MotionEvent.ACTION_MOVE: 

        // calculate horizontal move distance 
        int movedDistance = Math.round(event.getY() - startResize.y); 

        if (Math.abs(movedDistance) > 4) { 

         // set new height 
         boardImage.setHeight(movedDistance + (int)startResize.x); 
        } 

        break; 
      } 
      return true; // indicate event was handled 
     } 
    }); 

自定義的ImageView
自動調用setHeight:

// set height and revalidate 
public void setHeight(int newHeight){ 

    height = newHeight; 

    // rescale image 
    setImageMatrix(checkMatrix()); 

    requestLayout(); 
} 

onMeasure:

@Override 
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 

    setMeasuredDimension(width, height); 
} 

編輯更好的解釋

觸摸紅色包圍Button並拖動它向上/向下調整它的大小超過ImageView任何給定的大小。看到下面的圖片。

我試圖用一個Animation但我不得不取消它,並設置一個新的同進,共創20/30新的動畫每一秒每一個微小的運動使魔女結果..

zoomed layout http://roelept82.eightytwo.axc.nl/pic/link1.png

layout http://roelept82.eightytwo.axc.nl/pic/link2.png

回答

0

沒有足夠的評論聲望,所以我會在這裏發佈。 我不確定我是否瞭解您的問題的全部。你看過嗎?this?

它可能不是你正在尋找的東西,但他們使用動畫「縮放」的方式可能正是你所需要的。希望能幫助到你。

編輯:

閱讀更新的問題後,我意識到,我以前的答案是不是你在找什麼。但環顧四周,我找到了一個github-repo來做你想做的,here

我還沒有創建它,我也不擁有它。但是我測試了它,並且我認爲它幾乎完成了你想要的任務。

+0

謝謝!它看起來像使用動畫,但我會檢查它今晚。我更新了我的問題,希望現在更清楚 – MaMiFreak

+0

發現問題,我用getY它返回一個相對位置,getRawY解決了這個問題 – MaMiFreak

相關問題