protected override async void AnimateAddImpl(RecyclerView.ViewHolder viewHolder) { var flashColor = new Color(ContextCompat.GetColor(viewHolder.ItemView.Context, Resource.Color.blotterFlashBackground)); var normalColor = new Color(ContextCompat.GetColor(viewHolder.ItemView.Context, Resource.Color.blotterBackground)); Drawable[] color = { new ColorDrawable(flashColor), new ColorDrawable(normalColor) }; TransitionDrawable trans = new TransitionDrawable(color); viewHolder.ItemView.Background = trans; viewHolder.ItemView.ScaleY = 0; ViewCompat.Animate(viewHolder.ItemView).Alpha(1).ScaleY(1).SetDuration(150).Start(); await Task.Delay(500); trans.StartTransition(700); }
private void ChangeColor(Color newColor) { tabs.SetBackgroundColor(newColor); // change ActionBar color just if an ActionBar is available Drawable colorDrawable = new ColorDrawable(newColor); Drawable bottomDrawable = new ColorDrawable(Resources.GetColor(Android.Resource.Color.Transparent)); LayerDrawable ld = new LayerDrawable(new Drawable[]{colorDrawable, bottomDrawable}); if (oldBackground == null) { SupportActionBar.SetBackgroundDrawable(ld); } else { TransitionDrawable td = new TransitionDrawable(new Drawable[]{oldBackground, ld}); SupportActionBar.SetBackgroundDrawable(td); td.StartTransition(200); } oldBackground = ld; currentColor = newColor; }
private void ChangeColor(Color newColor) { _tabs.IndicatorColor = newColor; _tabs.TextColor = newColor; // change ActionBar color just if an ActionBar is available if (Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Honeycomb) { Drawable colorDrawable = new ColorDrawable(newColor); Drawable bottomDrawable = Resources.GetDrawable(Resource.Drawable.actionbar_bottom); LayerDrawable ld = new LayerDrawable(new Drawable[] { colorDrawable, bottomDrawable }); if (_oldBackground == null) { if ((int)Build.VERSION.SdkInt < 17) { ld.Callback = _drawableCallback; } else { ActionBar.SetBackgroundDrawable(ld); } } else { TransitionDrawable td = new TransitionDrawable(new Drawable[] { _oldBackground, ld }); // workaround for broken ActionBarContainer drawable handling on // pre-API 17 builds // https://github.com/android/platform_frameworks_base/commit/a7cc06d82e45918c37429a59b14545c6a57db4e4 if ((int)Build.VERSION.SdkInt < 17) { td.Callback = _drawableCallback; } else { ActionBar.SetBackgroundDrawable(td); } td.StartTransition(200); } _oldBackground = ld; // http://stackoverflow.com/questions/11002691/actionbar-setbackgrounddrawable-nulling-background-from-thread-handler ActionBar.SetDisplayShowTitleEnabled(false); ActionBar.SetDisplayShowTitleEnabled(true); } _currentColor = newColor; }
void updateBackground () { var location = WuClient.Shared.Selected; var random = location == null || Settings.RandomBackgrounds; var gradients = location.GetTimeOfDayGradient (random); using (var gd = new GradientDrawable (GradientDrawable.Orientation.TopBottom, gradients.Item1.ToArray ())) { gd.SetCornerRadius (0f); if (viewPager.Background == null) { viewPager.Background = gd; Window.SetStatusBarColor (gradients.Item1 [0]); Window.SetNavigationBarColor (gradients.Item1 [1]); } else { var backgrounds = new Drawable [2]; backgrounds [0] = viewPager.Background; backgrounds [1] = gd; var crossfader = new TransitionDrawable (backgrounds); viewPager.Background = crossfader; crossfader.StartTransition (1000); var statusBarAnimator = ValueAnimator.OfArgb (Window.StatusBarColor, gradients.Item1 [0]); statusBarAnimator.SetDuration (1000); statusBarAnimator.SetInterpolator (new AccelerateDecelerateInterpolator ()); statusBarAnimator.Update += (sender, e) => { var val = e.Animation.AnimatedValue as Java.Lang.Integer; var color = new Color ((int)val); Window.SetStatusBarColor (color); }; var naviationBarAnimator = ValueAnimator.OfArgb (Window.NavigationBarColor, gradients.Item1 [1]); naviationBarAnimator.SetDuration (1000); naviationBarAnimator.SetInterpolator (new AccelerateDecelerateInterpolator ()); naviationBarAnimator.Update += (sender, e) => { var val = e.Animation.AnimatedValue as Java.Lang.Integer; var color = new Color ((int)val); Window.SetNavigationBarColor (color); }; statusBarAnimator.Start (); naviationBarAnimator.Start (); } } }