我有一個自定義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
謝謝!它看起來像使用動畫,但我會檢查它今晚。我更新了我的問題,希望現在更清楚 – MaMiFreak
發現問題,我用getY它返回一個相對位置,getRawY解決了這個問題 – MaMiFreak