我正在寻找一种方法来向用户提供导航抽屉存在的提示。
我喜欢Google Currents暗示有下一页的方式,它只是在下一页中滑动几个像素,然后将其删除。
完成这样的动画的最佳方法是什么?
答案 0 :(得分:1)
这只会在左侧显示一个窄条 - 就像你的手指按在边框上一样。不确定这是否是Google Currents所做的,但我发现这是一种优雅的提示方式。 Source
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
}
答案 1 :(得分:0)
如果要实现自己的自定义ViewGroup,则应使用ViewDragHelper。它将负责处理触摸事件并在必要时为您滚动视图。您已将其配置为满足您的需求,您只需在抽屉视图上调用smoothSlideViewTo
即可将其滚动到您想要的任何位置。
Here is a nice intro to ViewDragHelper.
如果您使用DrawerLayout
,则默认情况下,当用户触摸屏幕边缘时,您会获得此类效果。我认为你不能以编程方式触发它,如果这是你想要的,因为peekDrawer()
在一个也被声明为私有的内部ViewDragHelper.Callback实例中被声明为私有。