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