示例#1
0
        public AndroidView(IVisualElement view,
                           Context context,
                           AndroidRenderKit renderKit,
                           IUiProvider uiProvider)
            : base(context)
        {
            _loopHandler = new Handler(Looper.MainLooper);
            _measured    = Size.Empty;
            _targetRect  = ValueRectangle.Empty;
            _view        = view;
            _surrogates  = new AndroidSurrogateProvider(renderKit, uiProvider, this);

            RenderKit  = renderKit;
            _viewState = renderKit.ViewState;


            ZoomLevel = renderKit.DisplayMetrics.ScaledDensity;

            //System.Diagnostics.Debug.WriteLine("Built android view with display w/h: " +
            //                                   renderKit.DisplayMetrics.WidthPixels + ", " +
            //                                   renderKit.DisplayMetrics.HeightPixels + " dpi: " +
            //                                   renderKit.DisplayMetrics.ScaledDensity);


            _paintView = new AndroidPaintView(context, renderKit, view);
            AddView(_paintView);

            var inputHandler = new BaseInputHandler(RenderKit.RenderContext);

            _inputContext = new AndroidInputContext(this, context, inputHandler, _viewState);

            renderKit.Container.ResolveTo(this);
        }
        private void Init(IWindowManager windowManager,
                          IThemeProvider themeProvider,
                          IViewPerspective viewPerspective,
                          DisplayMetrics displayMetrics,
                          AndroidFontProvider fontProvider,
                          IViewState viewState,
                          IUiProvider uiProvider,
                          ref AndroidMeasureKit measureContext,
                          ref AndroidRenderContext renderContext,
                          ref RefreshRenderContext refreshRenderContext)
        {
            var imageProvider = new AndroidImageProvider(displayMetrics);

            var visualLineage = new VisualLineage();

            var lastMeasures = new Dictionary <IVisualElement, ValueSize>();

            var layoutQueue = new LayoutQueue();

            measureContext = new AndroidMeasureKit(windowManager, fontProvider,
                                                   this, lastMeasures, themeProvider, displayMetrics, visualLineage, layoutQueue);

            var visualPositions = new Dictionary <IVisualElement, ValueCube>();

            renderContext = new AndroidRenderContext(viewPerspective,
                                                     fontProvider, viewState, this, visualPositions,
                                                     lastMeasures, themeProvider, visualLineage, layoutQueue);

            refreshRenderContext = new RefreshRenderContext(viewPerspective, this,
                                                            visualPositions, lastMeasures, themeProvider, visualLineage, layoutQueue);

            Container.ResolveTo <IImageProvider>(imageProvider);
            Container.ResolveTo(uiProvider);
            Container.ResolveTo(themeProvider);
        }
 public BaseObservableCommand(Func <Task> execute,
                              IUiProvider uiThread)
     : this(execute, _ => true, uiThread)
 {
     _uiProvider   = uiThread;
     _executeAsync = execute;
     _canExecute   = CanIExecute;
 }
示例#4
0
        public AndroidSurrogateProvider(IRenderKit renderKit,
                                        IUiProvider uiProvider,
                                        ViewGroup viewGroup)
        {
            _uiProvider = uiProvider;
            _viewGroup  = viewGroup;

            renderKit.RegisterSurrogate <HtmlPanel>(GetHtmlPanelSurrogate);
        }
 public BaseObservableCommand(Func <Task> execute,
                              Predicate <Object> canExecute,
                              IUiProvider ui)
 {
     _description   = String.Empty;
     _executeAsync  = execute;
     _uiProvider    = ui;
     _canExecute    = canExecute ?? CanIExecute;
     _canExecuteVal = true;
 }
        //TextView textMessage;

        //protected override void OnCreate(Bundle savedInstanceState)
        //{
        //    base.OnCreate(savedInstanceState);
        //    Xamarin.Essentials.Platform.Init(this, savedInstanceState);

        //    var vm = new TestVm();
        //    vm.Name = "hello world";
        //    var bob = new TestView();
        //    bob.SetBoundValue(vm);
        //    var v = new AndroidView(bob, this, WindowManager ?? throw new NullReferenceException());

        //    //var wv = new WebView(this);

        //    SetContentView(v);

        //    //SetContentView(Resource.Layout.activity_main);

        //    textMessage = FindViewById<TextView>(Resource.Id.message);
        //    //BottomNavigationView navigation = FindViewById<BottomNavigationView>(Resource.Id.navigation);
        //    //navigation.SetOnNavigationItemSelectedListener(this);
        //}

        protected override Task <IVisualElement> GetMainViewAsync(IRenderKit renderKit,
                                                                  IUiProvider uiProvider)
        {
            var vm = new TestVm();

            vm.Name = "hello world";
            IView view = new TestView(renderKit.VisualBootstrapper, renderKit.ImageProvider);

            view.DataContext = vm;
            return(Task.FromResult <IVisualElement>(view));
        }
 public BaseObservableCommand(Action execute,
                              IObjectManipulator typeManipulator,
                              INotifyPropertyChanged viewModel,
                              String propertyName,
                              IUiProvider uiProvider)
     : this(execute,
            _ => typeManipulator.GetPropertyValue <Boolean>(viewModel, propertyName),
            uiProvider)
 {
     _propertyName              = propertyName;
     viewModel.PropertyChanged += OnViewModelPropertyChanged;
 }
示例#8
0
        public HtmlSurrogate(HtmlPanel htmlPanel,
                             Context?context,
                             ViewGroup viewGroup,
                             IUiProvider uiProvider)
            : base(context)
        {
            _htmlPanel  = htmlPanel;
            _viewGroup  = viewGroup;
            _uiProvider = uiProvider;
            _htmlPanel.PropertyChanged += OnControlPropertyChanged;

            _hasPendingContent = htmlPanel.Markup != null || htmlPanel.Uri != null;
        }
示例#9
0
 // ReSharper disable once UnusedMember.Global
 public AndroidView(IVisualElement view,
                    Context context,
                    IWindowManager windowManager,
                    IUiProvider uiProvider,
                    IThemeProvider?themeProvider,
                    IResolver?resolver)
     : this(view, context,
            BuildRenderKit(context, windowManager, uiProvider,
                           themeProvider ?? BaselineThemeProvider.Instance,
                           resolver ?? new BaseResolver()),
            uiProvider)
 {
 }
        public HtmlSurrogate2(Context?context,
                              HtmlPanel htmlPanel,
                              WebView nativeView,
                              IUiProvider uiProvider,
                              ViewGroup viewGroup)
            : base(context, htmlPanel, nativeView, viewGroup)
        {
            _uiProvider = uiProvider;
            _htmlPanel  = htmlPanel;
            _nativeView = nativeView;
            htmlPanel.PropertyChanged += OnControlPropertyChanged;

            _hasPendingContent = htmlPanel.Markup != null || htmlPanel.Uri != null;
        }
示例#11
0
        private static AndroidRenderKit BuildRenderKit(Context context,
                                                       IWindowManager windowManager,
                                                       IUiProvider uiProvider,
                                                       IThemeProvider themeProvider,
                                                       IResolver resolver)
        {
            var displayMetrics = context.Resources?.DisplayMetrics ?? throw new NullReferenceException();


            var viewState = new AndroidViewState(displayMetrics, themeProvider);

            var fontProvider = new AndroidFontProvider(displayMetrics);

            return(new AndroidRenderKit(new BasePerspective(), viewState,
                                        fontProvider, windowManager, uiProvider, themeProvider, displayMetrics,
                                        resolver, new AndroidImageProvider(displayMetrics)));
        }
        public AndroidRenderKit(IViewPerspective viewPerspective,
                                IViewState viewState,
                                AndroidFontProvider fontProvider,
                                IWindowManager windowManager,
                                IUiProvider uiProvider,
                                IThemeProvider themeProvider,
                                DisplayMetrics displayMetrics,
                                IResolver container,
                                IImageProvider imageProvider)
            : base(imageProvider, Serializer,
                   new SvgPathBuilder(imageProvider, Serializer), container)
        {
            ViewState      = viewState;
            DisplayMetrics = displayMetrics;

            Init(windowManager, themeProvider, viewPerspective, displayMetrics,
                 fontProvider, viewState, uiProvider,
                 ref _measureContext !, ref _renderContext !, ref _refreshRenderContext !);
        }
 public BaseObservableCommand(Action execute,
                              IUiProvider uiThread)
     : this(execute, _ => true, uiThread)
 {
 }
 protected abstract Task <IVisualElement> GetMainViewAsync(IRenderKit renderKit,
                                                           // ReSharper disable once UnusedParameter.Global
                                                           IUiProvider uiProvider);