internal override void _fireDragging(DragAndDropItem item, IntVector2 position) { if (Dragging != null) { Dragging.Invoke((ItemType)item, position); } }
void _fireDragging(ItemType item, IntVector2 position) { if (Dragging != null) { Dragging.Invoke(item, position); } }
// Use this for initialization void Start() { resetSpeedSqr = resetSpeed * resetSpeed; spring = projectile.GetComponent <SpringJoint2D> (); projectilePosition = projectile.transform.position; rotation = projectile.transform.rotation; render = target.GetComponent <SpriteRenderer>(); dragging = projectile.GetComponent <Dragging>(); FailMessage.gameObject.SetActive(false); }
private void OnDrag(BaseEventData eventData) { var input = eventData.currentInputModule.input; if (input.touchSupported) { var touch = input.GetTouch(0); Dragging?.Invoke(new Vector2(touch.deltaPosition.x / Screen.width, touch.deltaPosition.y / Screen.height)); } else { Dragging?.Invoke(new Vector2(input.mousePosition.x / Screen.width, input.mousePosition.y / Screen.height) - _mouseBeginDragPosition); } }
private void HandleTouchRunning(float horizontalTraslation) { if (_itemIndex >= ItemsSource.Count) { return; } if (!_isDragging) { return; } if (horizontalTraslation - _lastX > DeltaX) { return; } _lastX = horizontalTraslation; var topCard = CardStack.Children[NumberOfCards - 1]; var backCard = CardStack.Children[NumberOfCards - 2]; if (topCard.IsVisible) { topCard.TranslationX = horizontalTraslation; var rotationAngle = (float)(0.3f * Math.Min(horizontalTraslation / Width, 1.0f)); topCard.Rotation = rotationAngle * 57.2957795f; _cardDistance = horizontalTraslation; Dragging?.Invoke(this, new DraggingEventArgs(ItemsSource[_itemIndex], _cardDistance)); } backCard.Scale = Math.Min(_defaultSubcardScale + Math.Abs((_cardDistance / CardMoveDistance) * (1 - _defaultSubcardScale)), 1); backCard.TranslationX = Math.Min(_defaultSubcardTranslationX + Math.Abs((_cardDistance / CardMoveDistance) * _defaultSubcardTranslationX), 0); backCard.Opacity = Math.Min(_defaultSubcardOpacity + Math.Abs((_cardDistance / CardMoveDistance) * _defaultSubcardOpacity), 1); }
private int DoQualityLevelSelection(int currentQualitylevel, IList <QualitySetting> qualitySettings, Dictionary <string, int> platformDefaultQualitySettings) { GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.BeginVertical(); var selectedLevel = currentQualitylevel; //Header row GUILayout.BeginHorizontal(); Rect header = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, GUILayout.ExpandWidth(false), GUILayout.Width(Styles.kLabelWidth), GUILayout.Height(Styles.kHeaderRowHeight)); header.x += EditorGUI.indent; header.width -= EditorGUI.indent; GUI.Label(header, "Levels", EditorStyles.boldLabel); //Header row icons foreach (var platform in m_ValidPlatforms) { var iconRect = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, GUILayout.MinWidth(Styles.kMinToggleWidth), GUILayout.MaxWidth(Styles.kMaxToggleWidth), GUILayout.Height(Styles.kHeaderRowHeight)); var temp = EditorGUIUtility.TempContent(platform.smallIcon); temp.tooltip = platform.title.text; GUI.Label(iconRect, temp); temp.tooltip = ""; } //Extra column for deleting setting button GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, GUILayout.MinWidth(Styles.kMinToggleWidth), GUILayout.MaxWidth(Styles.kMaxToggleWidth), GUILayout.Height(Styles.kHeaderRowHeight)); GUILayout.EndHorizontal(); //Draw the row for each quality setting var currentEvent = Event.current; for (var i = 0; i < qualitySettings.Count; i++) { GUILayout.BeginHorizontal(); var bgStyle = i % 2 == 0 ? Styles.kListEvenBg : Styles.kListOddBg; bool selected = (selectedLevel == i); //Draw the selected icon if required Rect r = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, GUILayout.ExpandWidth(false), GUILayout.Width(Styles.kLabelWidth)); switch (currentEvent.type) { case EventType.Repaint: bgStyle.Draw(r, GUIContent.none, false, false, selected, false); GUI.Label(r, EditorGUIUtility.TempContent(qualitySettings[i].m_Name)); break; case EventType.MouseDown: if (r.Contains(currentEvent.mousePosition)) { selectedLevel = i; GUIUtility.keyboardControl = 0; GUIUtility.hotControl = m_QualityElementHash; GUI.changed = true; m_Dragging = new Dragging { m_StartPosition = i, m_Position = i }; currentEvent.Use(); } break; case EventType.MouseDrag: if (GUIUtility.hotControl == m_QualityElementHash) { if (r.Contains(currentEvent.mousePosition)) { m_Dragging.m_Position = i; currentEvent.Use(); } } break; case EventType.MouseUp: if (GUIUtility.hotControl == m_QualityElementHash) { GUIUtility.hotControl = 0; currentEvent.Use(); } break; case EventType.KeyDown: if (currentEvent.keyCode == KeyCode.UpArrow || currentEvent.keyCode == KeyCode.DownArrow) { selectedLevel += currentEvent.keyCode == KeyCode.UpArrow ? -1 : 1; selectedLevel = Mathf.Clamp(selectedLevel, 0, qualitySettings.Count - 1); GUIUtility.keyboardControl = 0; GUI.changed = true; currentEvent.Use(); } break; } //Build a list of the current platform selection and draw it. foreach (var platform in m_ValidPlatforms) { bool isDefaultQuality = false; if (platformDefaultQualitySettings.ContainsKey(platform.name) && platformDefaultQualitySettings[platform.name] == i) { isDefaultQuality = true; } var toggleRect = GUILayoutUtility.GetRect(Content.kPlatformTooltip, Styles.kToggle, GUILayout.MinWidth(Styles.kMinToggleWidth), GUILayout.MaxWidth(Styles.kMaxToggleWidth)); if (Event.current.type == EventType.Repaint) { bgStyle.Draw(toggleRect, GUIContent.none, false, false, selected, false); } var color = GUI.backgroundColor; if (isDefaultQuality && !EditorApplication.isPlayingOrWillChangePlaymode) { GUI.backgroundColor = Color.green; } var supported = !qualitySettings[i].m_ExcludedPlatforms.Contains(platform.name); var newSupported = GUI.Toggle(toggleRect, supported, Content.kPlatformTooltip, isDefaultQuality ? Styles.kDefaultToggle : Styles.kToggle); if (supported != newSupported) { if (newSupported) { qualitySettings[i].m_ExcludedPlatforms.Remove(platform.name); } else { qualitySettings[i].m_ExcludedPlatforms.Add(platform.name); } } GUI.backgroundColor = color; } //Extra column for deleting quality button var deleteButton = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, GUILayout.MinWidth(Styles.kMinToggleWidth), GUILayout.MaxWidth(Styles.kMaxToggleWidth)); if (Event.current.type == EventType.Repaint) { bgStyle.Draw(deleteButton, GUIContent.none, false, false, selected, false); } if (GUI.Button(deleteButton, Content.kIconTrash, GUIStyle.none)) { m_DeleteLevel = i; } GUILayout.EndHorizontal(); } //Add a spacer line to separate the levels from the defaults GUILayout.BeginHorizontal(); DrawHorizontalDivider(); GUILayout.EndHorizontal(); //Default platform selection dropdowns GUILayout.BeginHorizontal(); var defaultQualityTitle = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, GUILayout.ExpandWidth(false), GUILayout.Width(Styles.kLabelWidth), GUILayout.Height(Styles.kHeaderRowHeight)); defaultQualityTitle.x += EditorGUI.indent; defaultQualityTitle.width -= EditorGUI.indent; GUI.Label(defaultQualityTitle, "Default", EditorStyles.boldLabel); // Draw default dropdown arrows foreach (var platform in m_ValidPlatforms) { var iconRect = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, GUILayout.MinWidth(Styles.kMinToggleWidth), GUILayout.MaxWidth(Styles.kMaxToggleWidth), GUILayout.Height(Styles.kHeaderRowHeight)); int position; if (!platformDefaultQualitySettings.TryGetValue(platform.name, out position)) { platformDefaultQualitySettings.Add(platform.name, 0); } position = EditorGUI.Popup(iconRect, position, qualitySettings.Select(x => x.m_Name).ToArray(), Styles.kDefaultDropdown); platformDefaultQualitySettings[platform.name] = position; } //Extra column for deleting setting button GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, GUILayout.MinWidth(Styles.kMinToggleWidth), GUILayout.MaxWidth(Styles.kMaxToggleWidth), GUILayout.Height(Styles.kHeaderRowHeight)); GUILayout.EndHorizontal(); GUILayout.Space(10); //Add an extra row for 'Add' button GUILayout.BeginHorizontal(); var addButtonRect = GUILayoutUtility.GetRect(Content.kAddQualityLevel, Styles.kToggle, GUILayout.ExpandWidth(true)); if (GUI.Button(addButtonRect, Content.kAddQualityLevel)) { m_ShouldAddNewLevel = true; } GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); return(selectedLevel); }
private int DoQualityLevelSelection(int currentQualitylevel, IList <QualitySetting> qualitySettings, Dictionary <string, int> platformDefaultQualitySettings) { GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayout.FlexibleSpace(); GUILayout.BeginVertical(new GUILayoutOption[0]); int num = currentQualitylevel; GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.ExpandWidth(false), GUILayout.Width(80f), GUILayout.Height(20f) }; Rect position = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, options); position.x += EditorGUI.indent; position.width -= EditorGUI.indent; GUI.Label(position, "Levels", EditorStyles.boldLabel); foreach (BuildPlayerWindow.BuildPlatform platform in this.m_ValidPlatforms) { GUILayoutOption[] optionArray2 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(20f) }; Rect rect2 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray2); GUIContent content = EditorGUIUtility.TempContent(platform.smallIcon); content.tooltip = platform.name; GUI.Label(rect2, content); content.tooltip = string.Empty; } GUILayoutOption[] optionArray3 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(20f) }; GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray3); GUILayout.EndHorizontal(); Event current = Event.current; for (int i = 0; i < qualitySettings.Count; i++) { GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUIStyle style = ((i % 2) != 0) ? Styles.kListOddBg : Styles.kListEvenBg; bool on = num == i; GUILayoutOption[] optionArray4 = new GUILayoutOption[] { GUILayout.ExpandWidth(false), GUILayout.Width(80f) }; Rect rect3 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray4); switch (current.type) { case EventType.MouseDown: if (rect3.Contains(current.mousePosition)) { num = i; GUIUtility.keyboardControl = 0; GUIUtility.hotControl = this.m_QualityElementHash; Dragging dragging = new Dragging { m_StartPosition = i, m_Position = i }; this.m_Dragging = dragging; current.Use(); } break; case EventType.MouseUp: if (GUIUtility.hotControl == this.m_QualityElementHash) { GUIUtility.hotControl = 0; current.Use(); } break; case EventType.MouseDrag: if ((GUIUtility.hotControl == this.m_QualityElementHash) && rect3.Contains(current.mousePosition)) { this.m_Dragging.m_Position = i; current.Use(); } break; case EventType.KeyDown: if ((current.keyCode == KeyCode.UpArrow) || (current.keyCode == KeyCode.DownArrow)) { num += (current.keyCode != KeyCode.UpArrow) ? 1 : -1; num = Mathf.Clamp(num, 0, qualitySettings.Count - 1); GUIUtility.keyboardControl = 0; current.Use(); } break; case EventType.Repaint: { style.Draw(rect3, GUIContent.none, false, false, on, false); QualitySetting setting = qualitySettings[i]; GUI.Label(rect3, EditorGUIUtility.TempContent(setting.m_Name)); break; } } foreach (BuildPlayerWindow.BuildPlatform platform2 in this.m_ValidPlatforms) { bool flag2 = false; if (platformDefaultQualitySettings.ContainsKey(platform2.name) && (platformDefaultQualitySettings[platform2.name] == i)) { flag2 = true; } GUILayoutOption[] optionArray5 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f) }; Rect rect4 = GUILayoutUtility.GetRect(Styles.kPlatformTooltip, Styles.kToggle, optionArray5); if (Event.current.type == EventType.Repaint) { style.Draw(rect4, GUIContent.none, false, false, on, false); } Color backgroundColor = GUI.backgroundColor; if (flag2 && !EditorApplication.isPlayingOrWillChangePlaymode) { GUI.backgroundColor = Color.green; } QualitySetting setting2 = qualitySettings[i]; bool flag3 = !setting2.m_ExcludedPlatforms.Contains(platform2.name); bool flag4 = GUI.Toggle(rect4, flag3, Styles.kPlatformTooltip, !flag2 ? Styles.kToggle : Styles.kDefaultToggle); if (flag3 != flag4) { if (flag4) { QualitySetting setting3 = qualitySettings[i]; setting3.m_ExcludedPlatforms.Remove(platform2.name); } else { QualitySetting setting4 = qualitySettings[i]; setting4.m_ExcludedPlatforms.Add(platform2.name); } } GUI.backgroundColor = backgroundColor; } GUILayoutOption[] optionArray6 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f) }; Rect rect5 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray6); if (Event.current.type == EventType.Repaint) { style.Draw(rect5, GUIContent.none, false, false, on, false); } if (GUI.Button(rect5, Styles.kIconTrash, GUIStyle.none)) { this.m_DeleteLevel = i; } GUILayout.EndHorizontal(); } GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayoutOption[] optionArray7 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(1f) }; GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray7); DrawHorizontalDivider(); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayoutOption[] optionArray8 = new GUILayoutOption[] { GUILayout.ExpandWidth(false), GUILayout.Width(80f), GUILayout.Height(20f) }; Rect rect6 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray8); rect6.x += EditorGUI.indent; rect6.width -= EditorGUI.indent; GUI.Label(rect6, "Default", EditorStyles.boldLabel); foreach (BuildPlayerWindow.BuildPlatform platform3 in this.m_ValidPlatforms) { int num3; GUILayoutOption[] optionArray9 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(20f) }; Rect rect7 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray9); if (!platformDefaultQualitySettings.TryGetValue(platform3.name, out num3)) { platformDefaultQualitySettings.Add(platform3.name, 0); } if (< > f__am$cache8 == null) {
private static void OnDragging(FormDraggingCancelEventArgs e) => Dragging?.Invoke(null, e);
private int DoQualityLevelSelection(int currentQualitylevel, IList<QualitySetting> qualitySettings, Dictionary<string, int> platformDefaultQualitySettings) { GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayout.FlexibleSpace(); GUILayout.BeginVertical(new GUILayoutOption[0]); int num = currentQualitylevel; GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.ExpandWidth(false), GUILayout.Width(80f), GUILayout.Height(20f) }; Rect position = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, options); position.x += EditorGUI.indent; position.width -= EditorGUI.indent; GUI.Label(position, "Levels", EditorStyles.boldLabel); foreach (BuildPlayerWindow.BuildPlatform platform in this.m_ValidPlatforms) { GUILayoutOption[] optionArray2 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(20f) }; Rect rect2 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray2); GUIContent content = EditorGUIUtility.TempContent(platform.smallIcon); content.tooltip = platform.title.text; GUI.Label(rect2, content); content.tooltip = ""; } GUILayoutOption[] optionArray3 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(20f) }; GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray3); GUILayout.EndHorizontal(); Event current = Event.current; for (int i = 0; i < qualitySettings.Count; i++) { GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUIStyle style = ((i % 2) != 0) ? Styles.kListOddBg : Styles.kListEvenBg; bool on = num == i; GUILayoutOption[] optionArray4 = new GUILayoutOption[] { GUILayout.ExpandWidth(false), GUILayout.Width(80f) }; Rect rect3 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray4); switch (current.type) { case EventType.MouseDown: if (rect3.Contains(current.mousePosition)) { num = i; GUIUtility.keyboardControl = 0; GUIUtility.hotControl = this.m_QualityElementHash; GUI.changed = true; Dragging dragging = new Dragging { m_StartPosition = i, m_Position = i }; this.m_Dragging = dragging; current.Use(); } break; case EventType.MouseUp: if (GUIUtility.hotControl == this.m_QualityElementHash) { GUIUtility.hotControl = 0; current.Use(); } break; case EventType.MouseDrag: if ((GUIUtility.hotControl == this.m_QualityElementHash) && rect3.Contains(current.mousePosition)) { this.m_Dragging.m_Position = i; current.Use(); } break; case EventType.KeyDown: if ((current.keyCode == KeyCode.UpArrow) || (current.keyCode == KeyCode.DownArrow)) { num += (current.keyCode != KeyCode.UpArrow) ? 1 : -1; num = Mathf.Clamp(num, 0, qualitySettings.Count - 1); GUIUtility.keyboardControl = 0; GUI.changed = true; current.Use(); } break; case EventType.Repaint: { style.Draw(rect3, GUIContent.none, false, false, on, false); QualitySetting setting = qualitySettings[i]; GUI.Label(rect3, EditorGUIUtility.TempContent(setting.m_Name)); break; } } foreach (BuildPlayerWindow.BuildPlatform platform2 in this.m_ValidPlatforms) { bool flag2 = false; if (platformDefaultQualitySettings.ContainsKey(platform2.name) && (platformDefaultQualitySettings[platform2.name] == i)) { flag2 = true; } GUILayoutOption[] optionArray5 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f) }; Rect rect4 = GUILayoutUtility.GetRect(Styles.kPlatformTooltip, Styles.kToggle, optionArray5); if (Event.current.type == EventType.Repaint) { style.Draw(rect4, GUIContent.none, false, false, on, false); } Color backgroundColor = GUI.backgroundColor; if (flag2 && !EditorApplication.isPlayingOrWillChangePlaymode) { GUI.backgroundColor = Color.green; } QualitySetting setting2 = qualitySettings[i]; bool flag3 = !setting2.m_ExcludedPlatforms.Contains(platform2.name); bool flag4 = GUI.Toggle(rect4, flag3, Styles.kPlatformTooltip, !flag2 ? Styles.kToggle : Styles.kDefaultToggle); if (flag3 != flag4) { if (flag4) { QualitySetting setting3 = qualitySettings[i]; setting3.m_ExcludedPlatforms.Remove(platform2.name); } else { QualitySetting setting4 = qualitySettings[i]; setting4.m_ExcludedPlatforms.Add(platform2.name); } } GUI.backgroundColor = backgroundColor; } GUILayoutOption[] optionArray6 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f) }; Rect rect5 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray6); if (Event.current.type == EventType.Repaint) { style.Draw(rect5, GUIContent.none, false, false, on, false); } if (GUI.Button(rect5, Styles.kIconTrash, GUIStyle.none)) { this.m_DeleteLevel = i; } GUILayout.EndHorizontal(); } GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayoutOption[] optionArray7 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(1f) }; GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray7); DrawHorizontalDivider(); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(new GUILayoutOption[0]); GUILayoutOption[] optionArray8 = new GUILayoutOption[] { GUILayout.ExpandWidth(false), GUILayout.Width(80f), GUILayout.Height(20f) }; Rect rect6 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray8); rect6.x += EditorGUI.indent; rect6.width -= EditorGUI.indent; GUI.Label(rect6, "Default", EditorStyles.boldLabel); foreach (BuildPlayerWindow.BuildPlatform platform3 in this.m_ValidPlatforms) { int num3; GUILayoutOption[] optionArray9 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(20f) }; Rect rect7 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray9); if (!platformDefaultQualitySettings.TryGetValue(platform3.name, out num3)) { platformDefaultQualitySettings.Add(platform3.name, 0); } if (<>f__am$cache0 == null) {
protected virtual void OnDragging(MoveEventArgs e) { Dragging?.Invoke(this, e); }
public virtual void Drag(Vector3 mousePosition) => Dragging?.Invoke(this, mousePosition);
public void OnDrag(PointerEventData eventData) { CurrentPosition = eventData.position; CurrentDelta = eventData.delta; Dragging?.Invoke(); }
public bool OnTouch(View view, MotionEvent motionEvent) { var action = motionEvent.Action; if (action == MotionEventActions.Down) { handler.PostDelayed(mLongPressed, 1000); var moveView = GetMovableView(view); downRawX = motionEvent.RawX; downRawY = motionEvent.RawY; dX = moveView.GetX() - downRawX; dY = moveView.GetY() - downRawY; DragStart?.Invoke(this, new FabDragEvent(dX, dY)); moveView.Animate() .ScaleX(0.6f) .ScaleY(0.6f) .SetDuration(1000) .Start(); return(true); // Consumed } if (action == MotionEventActions.Move) { handler.RemoveCallbacks(mLongPressed); var moveView = GetMovableView(view); int viewWidth = moveView.Width; int viewHeight = moveView.Height; View viewParent = (View)moveView.Parent; int parentWidth = viewParent.Width; int parentHeight = viewParent.Height; float newX = motionEvent.RawX + dX; newX = Java.Lang.Math.Max(0, newX); // Don't allow the FAB past the left hand side of the parent newX = Java.Lang.Math.Min(parentWidth - viewWidth, newX); // Don't allow the FAB past the right hand side of the parent float newY = motionEvent.RawY + dY; newY = Java.Lang.Math.Max(0, newY); // Don't allow the FAB past the top of the parent newY = Java.Lang.Math.Min(parentHeight - viewHeight, newY); // Don't allow the FAB past the bottom of the parent if (moveView.ScaleX == 1f) { moveView.Animate() .ScaleX(0.6f) .ScaleY(0.6f) .SetDuration(1000) .Start(); } moveView.Animate() .X(newX) .Y(newY) .SetDuration(0) .Start(); Dragging?.Invoke(this, new FabDragEvent(newX + moveView.Width / 2, newY + moveView.Height / 2)); return(true); // Consumed } if (action == MotionEventActions.Up) { handler.RemoveCallbacks(mLongPressed); var moveView = GetMovableView(view); float upRawX = motionEvent.RawX; float upRawY = motionEvent.RawY; float upDX = upRawX - downRawX; float upDY = upRawY - downRawY; if (Java.Lang.Math.Abs(upDX) < CLICK_DRAG_TOLERANCE && Java.Lang.Math.Abs(upDY) < CLICK_DRAG_TOLERANCE) { // A click moveView.Animate() .ScaleX(1f) .ScaleY(1f) .SetDuration(1000) .Start(); return(base.PerformClick()); } // A drag DragEnd?.Invoke(this, new FabDragEvent(moveView.GetX() + moveView.Width / 2, moveView.GetY() + moveView.Height / 2)); View viewParent = (View)moveView.Parent; moveView.Animate() .X(viewParent.Width - moveView.Width - 10) .Y(viewParent.Height - moveView.Height - 10) .SetDuration(1000) .Start(); moveView.Animate() .ScaleX(1f) .ScaleY(1f) .SetDuration(1000) .Start(); return(true); // Consumed } return(OnTouchEvent(motionEvent)); }
protected virtual void OnDragging(MoveEventArgs e) { isBeingDragged = true; Dragging?.Invoke(this, e); }