Android 在两个方向上切换布局?
我喜欢新的泳衣布局!它看起来很棒,而且很容易使用。 但我想在两个方向上使用它。我有一个信息屏幕,我想 通过从上到下滑动来加载旧邮件,我想通过从下到上滑动来加载新邮件 这个例子: 非常简单地解释了如何实现从上到下的滑动,但如何实现双向滑动?基于源代码,它只监听垂直变化(请参见Android 在两个方向上切换布局?,android,Android,我喜欢新的泳衣布局!它看起来很棒,而且很容易使用。 但我想在两个方向上使用它。我有一个信息屏幕,我想 通过从上到下滑动来加载旧邮件,我想通过从下到上滑动来加载新邮件 这个例子: 非常简单地解释了如何实现从上到下的滑动,但如何实现双向滑动?基于源代码,它只监听垂直变化(请参见公共布尔onTouchEvent(MotionEvent事件)) 您应该能够重写该类,并自己实现该重写,以使其能够侦听水平和垂直滑动,但我认为没有任何现成的东西允许您这样做 最令人感兴趣的是: case MotionEvent
公共布尔onTouchEvent(MotionEvent事件)
)
您应该能够重写该类,并自己实现该重写,以使其能够侦听水平和垂直滑动,但我认为没有任何现成的东西允许您这样做
最令人感兴趣的是:
case MotionEvent.ACTION_MOVE:
if (mDownEvent != null && !mReturningToStart) {
final float eventY = event.getY();
float yDiff = eventY - mDownEvent.getY();
if (yDiff > mTouchSlop) {
// User velocity passed min velocity; trigger a refresh
if (yDiff > mDistanceToTriggerSync) {
// User movement passed distance; trigger a refresh
startRefresh();
handled = true;
break;
} else {
// Just track the user's movement
setTriggerPercentage(
mAccelerateInterpolator.getInterpolation(
yDiff / mDistanceToTriggerSync));
float offsetTop = yDiff;
if (mPrevY > eventY) {
offsetTop = yDiff - mTouchSlop;
}
updateContentOffsetTop((int) (offsetTop));
if (mPrevY > eventY && (mTarget.getTop() < mTouchSlop)) {
// If the user puts the view back at the top, we
// don't need to. This shouldn't be considered
// cancelling the gesture as the user can restart from the top.
removeCallbacks(mCancel);
} else {
updatePositionTimeout();
}
mPrevY = event.getY();
handled = true;
}
}
}
break;
case MotionEvent.ACTION\u移动:
如果(mDownEvent!=null&&!mreturningstatart){
final float eventY=event.getY();
float yDiff=eventY-mDownEvent.getY();
如果(yDiff>mTouchSlop){
//用户速度超过最小速度;触发刷新
如果(yDiff>mdistancetTriggerSync){
//用户移动超过距离;触发刷新
startRefresh();
已处理=正确;
打破
}否则{
//只需跟踪用户的移动即可
setTriggerPercentage(
mAccelerateInterpolator.getInterpolation(
yDiff/mDistanceToTriggerSync);
浮动偏移量=yDiff;
如果(mPrevY>eventY){
offsetTop=yDiff-mTouchSlop;
}
updateContentOffsetTop((int)(offsetTop));
如果(mPrevY>eventY&&(mTarget.getTop()
请注意,我不推荐这种方法。它不是标准的接口,没有人会期望它以这种方式工作,这可能会让人困惑。在自定义布局中重写此方法还有一个额外的风险,即将来出现新版本并希望升级时,您可能需要重做所有操作