Android 雙向滑動價格選擇控制項

2021-09-11 03:03:04 字數 1461 閱讀 9811

這個是上個公司做的功能,一直說寫一篇文件,可是一直沒時間,現在直接把我自己封裝的控制項放上來,大家可以幫忙校驗校驗。。。

public class reboundscrollview extends horizontalscrollview 

public reboundscrollview(context context, attributeset attrs)

@suppresslint("missingsupercall")

@override

protected void onfinishinflate()

}@override

protected void onlayout(boolean changed, int l, int t, int r, int b)

/*** 在觸控事件中, 處理左拉和右拉的邏輯

*/@override

public boolean dispatchtouchevent(motionevent ev)

//手指是否移動到了當前scrollview控制項之外

boolean istouchoutofscrollview = ev.getx() >= this.getwidth() || ev.getx() <= 0;

if (istouchoutofscrollview)

int action = ev.getaction();

switch (action)

//計算手指移動的距離

float nowx = ev.getx();

int deltax = (int) (nowx - startx);

//是否應該移動布局

boolean shouldmove = (canpullleft && deltax > 0) //可以左拉, 並且手指向右移動

|| (canpullright && deltax < 0) //可以左拉, 並且手指向右移動

|| (canpullright && canpullleft); //既可以右拉也可以左拉(這種情況出現在scrollview包裹的控制項比scrollview還小)

if (shouldmove)

break;

default:

break;

}return super.dispatchtouchevent(ev);

}/**

* 將內容布局移動到原位置

* 可以在up事件中呼叫, 也可以在其他需要的地方呼叫, 如手指移動到當前scrollview外時

*/private void boundback()

/*** 判斷是否滾動到頂部

*/private boolean iscanpullleft()

/*** 判斷是否滾動到底部

*/private boolean iscanpullright()

}

android雙向滑動衝突處理及解決方案

android中的事件型別分為按鍵事件和螢幕觸控事件,touch事件是螢幕觸控事件的基礎事件,有必要對它進行深入的了解。乙個最簡單的螢幕觸控動作觸發了一系列touch事件 action down action move action move action move.action move acti...

Android彈性滑動

1 view使用scroller滑動 在scroller.startscroll 方法中,會將scrollx和deltax相加存入mfinalx中 invalidate 方法會呼叫draw 方法,draw 會呼叫computescroll 方法,而在view 中computescroll 方法是空實...

android滑動介面

滑動相關的方法 scrollto int x,int y x,y代表的不是座標點,而是偏移量。scrollby int x,int y 它實際上是呼叫了scrollto mscrollx x,mscrolly y 即表示在原先偏移的基礎上在發生偏移 scroller.getcurrx 獲取mscro...