我正在寻找一种向用户提示存在导航抽屉的方法。
我喜欢 Google Currents 提示有下一页的方式,它只是在下一页中滑动几个像素然后将其删除。
完成这样一个动画的最佳方法是什么?
我正在寻找一种向用户提示存在导航抽屉的方法。
我喜欢 Google Currents 提示有下一页的方式,它只是在下一页中滑动几个像素然后将其删除。
完成这样一个动画的最佳方法是什么?
这只会在左侧显示一个窄条 - 就像您将手指按在边框上一样。不确定这是否是 Google Currents 所做的,但我发现这是一种优雅的提示方式。资源
protected void peekDrawer() {
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
MotionEvent motionEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, 0, 100, 0);
m_drawerLayout.dispatchTouchEvent(motionEvent);
motionEvent.recycle();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
MotionEvent motionEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, 0, 100, 0);
m_drawerLayout.dispatchTouchEvent(motionEvent);
motionEvent.recycle();
}
}, (long) (1 * DateUtils.SECOND_IN_MILLIS)); //change 1 to however many seconds you wish to display the hint for
}
如果您正在实现自己的自定义 ViewGroup,则应为此使用 ViewDragHelper。它将负责处理触摸事件并在必要时为您滚动视图。您已经对其进行了配置以满足您的需求,您只需要调用smoothSlideViewTo
您的抽屉视图以使其滚动到您想要的任何位置。
如果您使用 a DrawerLayout
,则默认情况下,当用户触摸屏幕边缘时,您会获得这种效果。我认为您不能以编程方式触发它,如果这是您想要的,就像peekDrawer()
在一个也声明为私有的内部 ViewDragHelper.Callback 实例中声明的私有一样。