public void SetTranslationInView(Xamarin.Forms.Point translation, Xamarin.Forms.VisualElement view)
 {
     //NOT really supported in Android
     //TODO take account of view
     _currentTranslation = translation;
     _currentPoint       = translation;
     _previousPoint      = translation;
 }
Exemplo n.º 2
0
        public static void CancelAllAnimations(this Xamarin.Forms.VisualElement view)
        {
            if (view == null)
            {
                throw new ArgumentNullException(@"view");
            }

            Xamarin.Forms.ViewExtensions.CancelAnimations(view);
        }
        public void SetElement(Xamarin.Forms.VisualElement element)
        {
            var contentView = new Xamarin.Forms.ContentView();
            var renderer    = Xamarin.Forms.Platform.Android.Platform.CreateRendererWithContext(contentView, Context);
            var oldElement  = this.element;

            if (oldElement != null)
            {
                oldElement.SurfaceInvalidated   -= Invalidate;
                oldElement.FocusChangeRequested -= OnFocusChangeRequested;
                oldElement.PropertyChanged      -= OnElementPropertyChanged;
                // clear all values
                oldElement.Gesture?.Clear();
                oldElement.OnUnbind();
                SetOnTouchListener(null);

                if (element.BackgroundColor != oldElement.BackgroundColor)
                {
                    UpdateBackgroundColor();
                }
            }
            var newElement = element as TElement;

            this.element = newElement;
            newElement.SurfaceInvalidated   += Invalidate;
            newElement.FocusChangeRequested += OnFocusChangeRequested;
            UpdateFlowDirection();
            UpdateIsEnabled();
            // Ensure renderer for marker is set
            UpdateMarker();
            if (newElement.Background != null)
            {
                UpdateBackground();
            }
            element.PropertyChanged += OnElementPropertyChanged;
            var gesture = newElement.Gesture;

            if (gesture != null)
            {
                gesture.Clear();
                gesture.OnInitialize(this);
                SetOnTouchListener(gesture);
            }
            if (_tracker == null)
            {
                // Can't set up the tracker in the constructor because it access the Element (for now)
                _tracker = new VisualElementTracker(this);
            }
            if (!string.IsNullOrEmpty(element.StyleId))
            {
                ContentDescription = element.StyleId;
            }
            Invalidate();
            OnElementChanged(oldElement, newElement);
        }
Exemplo n.º 4
0
        public void AddTouchMoveHandler(Xamarin.Forms.VisualElement xamarinVisual, EventHandler <TouchEventArgs> handler)
        {
            IVisualElementRenderer renderer = Platform.GetRenderer(xamarinVisual);
            Panel panel = renderer as Panel;

            panel.PointerMoved += this.Panel_PointerMoved;

            TouchEventsHelper helper = GetOrCreateTouchEventsHelper(panel);

            helper.touchMoveHandlers.Add(handler);
        }
Exemplo n.º 5
0
        private void SetNativeView(Xamarin.Forms.VisualElement view)
        {
            var renderer = Platform.CreateRenderer(view);

            renderer.NativeView.Frame = UIScreen.MainScreen.Bounds;

            renderer.NativeView.AutoresizingMask = UIViewAutoresizing.All;
            renderer.NativeView.ContentMode      = UIViewContentMode.ScaleToFill;

            renderer.Element.Layout(UIScreen.MainScreen.Bounds.ToRectangle());

            Window.RootViewController.View.AddSubview(renderer.NativeView);
        }
Exemplo n.º 6
0
        protected Xamarin.Forms.Point GetLocationInAncestorView(Xamarin.Forms.Point location, Xamarin.Forms.VisualElement view)
        {
            var targetViewRenderer = view.GetRenderer();
            var targetView         = targetViewRenderer.ViewGroup;
            var parent             = NativeView;
            var returnPoint        = location;

            while (parent != null && parent != targetView)
            {
                returnPoint.X += parent.Left;
                returnPoint.Y += parent.Top;
                parent         = NativeView.Parent as View;
            }
            return(returnPoint);
        }
Exemplo n.º 7
0
 public virtual Xamarin.Forms.Point LocationOfTouch(int touchIndex, Xamarin.Forms.VisualElement view)
 {
     return(GetLocationInAncestorView(FirstTouchPoint, view));
 }
 public Xamarin.Forms.Point GetTranslationInView(Xamarin.Forms.VisualElement view)
 {
     //not supported like in iOS right now.
     return(new Xamarin.Forms.Point(-_currentTranslation.X, -_currentTranslation.Y));
 }
        public Xamarin.Forms.Point GetVelocityInView(Xamarin.Forms.VisualElement view)
        {
            return(_velocity);
//			throw new NotImplementedException ("need to write velocity");
        }
Exemplo n.º 10
0
 public void SetTranslationInView(Xamarin.Forms.Point translation, Xamarin.Forms.VisualElement view)
 {
     //Experimental android support
     _rawTranslation = translation;
 }
Exemplo n.º 11
0
 public override Xamarin.Forms.Point LocationInView(Xamarin.Forms.VisualElement view)
 {
     return(GetLocationInAncestorView(_currentScreenPoint, view));
 }
Exemplo n.º 12
0
 public Xamarin.Forms.Point GetTranslationInView(Xamarin.Forms.VisualElement view)
 {
     return(new Xamarin.Forms.Point(_rawTranslation.X, _rawTranslation.Y));
 }
Exemplo n.º 13
0
 public Xamarin.Forms.Point GetVelocityInView(Xamarin.Forms.VisualElement view)
 {
     return(_velocity);
 }
Exemplo n.º 14
0
        protected Xamarin.Forms.Point GetLocationInAncestorView(Xamarin.Forms.Point location, Xamarin.Forms.VisualElement view)
        {
            int[] nativeViewLocation = new int[2];
            NativeView.GetLocationOnScreen(nativeViewLocation);
            var nativeViewLocationOnScreen = new Xamarin.Forms.Point(nativeViewLocation [0], nativeViewLocation [1]);

            var offsetLocation = new Xamarin.Forms.Point(location.X + nativeViewLocationOnScreen.X, location.Y + nativeViewLocationOnScreen.Y);

            var targetViewRenderer = view.GetRenderer();
            var targetView         = targetViewRenderer.ViewGroup;

            int[] targetViewLocation = new int[2];
            targetView.GetLocationOnScreen(targetViewLocation);
            var nativeViewScreenLocation = new Xamarin.Forms.Point(targetViewLocation [0], targetViewLocation [1]);

            var returnPoint = offsetLocation;

            returnPoint.X -= nativeViewScreenLocation.X;
            returnPoint.Y -= nativeViewScreenLocation.Y;

            Console.WriteLine("offsetLocation {0} nativeViewLocationOnScreen {1} returnPoint", offsetLocation, nativeViewLocationOnScreen);
            Console.WriteLine("location {0} parentViewLoc {1} returnPoint {2}", location, nativeViewScreenLocation, returnPoint);
            return(returnPoint);
        }