默认的那个箭头显示出来以后不会跟着手势上下移动,要实现上下移动就要先知道这个视图是怎么添加上去的。
首先看一下EdgeBackGesturehandler
,在其中初始化了NavigationBarEdgePanel
并且设置了WindowManager.LayoutParams
// 第一步:创建Panel
// Add a nav bar panel window
setEdgeBackPlugin(new NavigationBarEdgePanel(mContext));
// 第二步:设置LayoutParams
private void setEdgeBackPlugin(NavigationEdgeBackPlugin edgeBackPlugin) {
…
mEdgeBackPlugin = edgeBackPlugin;
// 设置返回回调
mEdgeBackPlugin.setBackCallback(mBackCallback);
// 设置LayoutParams
mEdgeBackPlugin.setLayoutParams(createLayoutParams());
updateDisplaySize();
}
这个类中并没有看到视图如何添加到屏幕上的。
那么再来看看NavigationBarEdgePanel
。
// 1,构造方法中获取WindowManager
public NavigationBarEdgePanel(Context context) {
mWindowManager = context.getSystemService(WindowManager.class);
…
}
@Override
public void setLayoutParams(WindowManager.LayoutParams layoutParams) {
mLayoutParams = layoutParams;
// 2,把当前view添加到WindowManager中
mWindowManager.addView(this, mLayoutParams);
}
在构造方法中获取了WindowManager
,然后在setLayoutParams()
中将当前view添加到WindowManager
中。大致了解了它是怎么显示出来的之后,就可以修改它的位置了。
既然是想让他跟着手指上下滑动