public void OnPageScrollStateChanged(int state) { if (Settings.DisplayToolbarWhenSwipe) { MaterialViewPagerHelper.GetAnimator(Context).OnViewPagerPageChanged(); } }
protected override IParcelable OnSaveInstanceState() { IParcelable superState = base.OnSaveInstanceState(); SavedState ss = new SavedState(superState) { Settings = Settings, YOffset = MaterialViewPagerHelper.GetAnimator(Context).LastYOffset }; //end return(ss); }
private void SetMaterialHeight() { //get the MaterialViewPagerAnimator attached to this activity //to retrieve the declared header height //and set it as current view height (+10dp margin) MaterialViewPagerAnimator animator = MaterialViewPagerHelper.GetAnimator(Context); if (animator != null) { ViewGroup.LayoutParams param = LayoutParameters; param.Height = (int)Math.Round(Utils.DpToPx(animator.GetHeaderHeight() + 10, Context)); LayoutParameters = param; } }
protected override void OnRestoreInstanceState(IParcelable state) { SavedState ss = (SavedState)state; base.OnRestoreInstanceState(ss.SuperState); Settings = ss.Settings; if (HeaderBackground != null) { HeaderBackground.SetBackgroundColor(new Color(Settings.Color)); } MaterialViewPagerAnimator animator = MaterialViewPagerHelper.GetAnimator(Context); //-1*ss.yOffset restore to 0 animator.RestoreScroll(-1 * ss.YOffset, ss.Settings); MaterialViewPagerHelper.Register(Context, animator); }
protected override void OnFinishInflate() { base.OnFinishInflate(); //add @layout/material_view_pager_layout as child, containing all the MaterialViewPager views AddView(LayoutInflater.From(Context).Inflate(Resource.Layout.material_view_pager_layout, this, false)); _headerBackgroundContainer = FindViewById <ViewGroup>(Resource.Id.headerBackgroundContainer); _pagerTitleStripContainer = FindViewById <ViewGroup>(Resource.Id.pagerTitleStripContainer); _logoContainer = FindViewById <ViewGroup>(Resource.Id.logoContainer); MToolbar = FindViewById <Toolbar>(Resource.Id.toolbar); if (Settings.DisableToolbar) { MToolbar.Visibility = ViewStates.Invisible; } MViewPager = FindViewById <ViewPager>(Resource.Id.viewPager); MViewPager.AddOnPageChangeListener(this); //inflate subviews defined in attributes { int headerId = Settings.HeaderLayoutId; if (headerId == -1) { headerId = Settings.AnimatedHeaderImage ? Resource.Layout.material_view_pager_moving_header : Resource.Layout.material_view_pager_imageview_header; } _headerBackgroundContainer.AddView(LayoutInflater.From(Context).Inflate(headerId, _headerBackgroundContainer, false)); } if (IsInEditMode) { //preview titlestrip //add fake tabs on edit mode Settings.PagerTitleStripId = Resource.Layout.tools_material_view_pager_pagertitlestrip; } if (Settings.PagerTitleStripId != -1) { _pagerTitleStripContainer.AddView(LayoutInflater.From(Context).Inflate(Settings.PagerTitleStripId, _pagerTitleStripContainer, false)); } if (Settings.LogoLayoutId != -1) { _logoContainer.AddView(LayoutInflater.From(Context).Inflate(Settings.LogoLayoutId, _logoContainer, false)); if (Settings.LogoMarginTop != 0) { RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)_logoContainer.LayoutParameters; layoutParams.SetMargins(0, Settings.LogoMarginTop, 0, 0); _logoContainer.LayoutParameters = layoutParams; } } HeaderBackground = FindViewById(Resource.Id.headerBackground); ToolbarLayoutBackground = FindViewById(Resource.Id.toolbar_layout_background); InitialiseHeights(); //construct the materialViewPagerHeader with subviews if (!IsInEditMode) { MaterialViewPagerHeader = MaterialViewPagerHeader .WithToolbar(MToolbar) .WithToolbarLayoutBackground(ToolbarLayoutBackground) .WithPagerSlidingTabStrip(_pagerTitleStripContainer) .WithHeaderBackground(HeaderBackground) .WithStatusBackground(FindViewById(Resource.Id.statusBackground)) .WithLogo(_logoContainer); //and construct the MaterialViewPagerAnimator //attach it to the activity to enable MaterialViewPagerHeaderView.setMaterialHeight(); MaterialViewPagerHelper.Register(Context, new MaterialViewPagerAnimator(this)); } else { //if in edit mode, add fake cardsviews View sample = LayoutInflater.From(Context).Inflate(Resource.Layout.tools_list_items, _pagerTitleStripContainer, false); LayoutParams param = (LayoutParams)sample.LayoutParameters; int marginTop = (int)Math.Round(Utils.DpToPx(Settings.HeaderHeight + 10, Context)); param.SetMargins(0, marginTop, 0, 0); LayoutParameters = param; AddView(sample); } }
protected override void OnDetachedFromWindow() { MaterialViewPagerHelper.Unregister(Context); Listener = null; base.OnDetachedFromWindow(); }
/** * Change the header color */ public void SetColor(int color, int fadeDuration) { MaterialViewPagerHelper.GetAnimator(Context).SetColor(color, fadeDuration * 2); }