0
enter image description here我一直在這個問題上困擾了很多年,互聯網似乎也不想幫忙。Android - onTouch(ACTION_MOVE) - 停止退出屏幕的視圖
我有一個自定義視圖,我可以使用onTouchListener和它隨附的事件拖動屏幕。當它退出屏幕時,我需要這個拖動停止。我已經掌握了屏幕尺寸,並且可以檢測到什麼時候需要發生某些事情,但我想不出一種「強制」視圖保持邊界的好方法。
如果我設置了一些布爾邏輯,它會凍結視圖使其無法拖回。 如果我將點保存到該標記,然後在檢測到邊界時重新設置視圖,則看起來很可怕(跳躍)。
我正在尋找視圖以保持界限,即使用戶不斷移動他們的手指,以便當用戶從界限向後拖動(如果您接觸到我?!)時再回到「播放」。我想就像一個假想的牆...
相關代碼如下這樣你就可以得到我在
case MotionEvent.ACTION_MOVE:
RelativeLayout.LayoutParams moveParam = (RelativeLayout.LayoutParams) v.getLayoutParams();
float maxTop = (mHeight-mPeepHole)/2;
Log.d(TAG, "onTouch: maxTop = " + maxTop);
if (moveParam.topMargin > maxTop || moveParam.topMargin < -(mHeight-mPeepHole)/2)
{
Log.d(TAG, "onTouch: OUT OF BOUNDS HEIGHT");
// this fires when I need it to, all good.
// here is where I need some logic
}
if (moveParam.leftMargin > (mWidth-mPeepHole)/2 || moveParam.leftMargin < -(mWidth-mPeepHole)/2)
{
Log.d(TAG, "onTouch: OUT OF BOUNDS WIDTH");
// and here...
}
moveParam.leftMargin = x - Position_X;
moveParam.topMargin = y - Position_Y;
moveParam.rightMargin = -500; // ignore this at present
moveParam.bottomMargin = -500; // ignore this at present
v.setLayoutParams(moveParam);
break;
其中的想法...
爲了詳細說明,在x是不應該能夠退出屏幕的中心點。該視圖可觸及,並從任何一點拖又當X碰到屏幕邊緣
這是很好的謝謝。然而,從用戶觸摸輸入x/y開始跟蹤,我的項目效果不佳。我的觀點是全屏幕,因此可以從任何地方觸摸,但它只有屏幕的中心點(寬度/ 2,高度/ 2),我需要包含它。 –
然後不是減去視圖寬度,而是減去一半。而不是最大與0,最大與-view.getWidth()/ 2 –
您可以詳細說明嗎?儘管我感覺我很接近,但我無法讓它工作。無論我放置手指的位置如何,檢測都能正常工作,但只有在屏幕正中間放置時,視圖纔會「粘住」。 –