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