55 {
56 container = activity.findViewById(R.id.floating_toolbar_container);
57 buttons = activity.findViewById(R.id.floating_toolbar_buttons);
58 View handle = activity.findViewById(R.id.floating_toolbar_handle);
59 setTooltip(handle);
60
61 GestureDetector gestureDetector =
62 new GestureDetector(activity, new GestureDetector.SimpleOnGestureListener() {
63 @Override public boolean onSingleTapConfirmed(MotionEvent e)
64 {
65 toggle();
66 return true;
67 }
68 });
69
70 View.OnTouchListener dragListener = buildDragListener(activity, gestureDetector, handle);
71 container.setOnTouchListener(dragListener);
72 handle.setOnTouchListener(dragListener);
73 for (int i = 0; i < buttons.getChildCount(); i++)
74 buttons.getChildAt(i).setOnTouchListener(dragListener);
75
76 bindButton(activity, R.id.floating_toolbar_touch_pointer, listener::onToggleTouchPointer);
77 bindButton(activity, R.id.floating_toolbar_sys_keyboard, listener::onToggleSysKeyboard);
78 bindButton(activity, R.id.floating_toolbar_ext_keyboard, listener::onToggleExtKeyboard);
79
80 ViewTreeObserver vto = container.getViewTreeObserver();
81 vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
82 @Override public void onGlobalLayout()
83 {
84 container.getViewTreeObserver().removeOnGlobalLayoutListener(this);
85 View parent = (View)container.getParent();
86 if (parent == null)
87 return;
88 positionInitial(parent);
89 parent.addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop,
90 oldRight, oldBottom) -> {
91 if (right - left != oldRight - oldLeft || bottom - top != oldBottom - oldTop)
92 resnapToSameEdge();
93 });
94 }
95 });
96 }