private void Init() { underlineHeight = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 2, Resources.DisplayMetrics); }
private int PixelsToDp(int pixels) { return((int)TypedValue.ApplyDimension(ComplexUnitType.Dip, pixels, Resources.DisplayMetrics)); }
private int DipToPixels(int dip) { return((int)TypedValue.ApplyDimension(ComplexUnitType.Dip, dip, Resources.DisplayMetrics)); }
private void InitView() { calendar = Calendar.Instance; width = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 256, new DisplayMetrics()); height = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 256, new DisplayMetrics()); hourColor = Color.Red; minuteColor = Color.Green; secondColor = Color.Blue; hourWidth = 8; minuteWidth = 5; secondWidth = 2; circlePaint = new Paint { AntiAlias = true, Color = Color.Green, StrokeWidth = 6 }; circlePaint.SetStyle(Style.Stroke); dotPaint = new Paint { AntiAlias = true, Color = Color.Red }; dotPaint.SetStyle(Style.Fill); numPaint = new Paint { AntiAlias = true, Color = Color.Red, TextAlign = Align.Center }; hourPaint = new Paint { Color = hourColor, StrokeWidth = hourWidth }; hourPaint.SetStyle(Style.Fill); hourPaint = new Paint { Color = hourColor, StrokeWidth = hourWidth }; hourPaint.SetStyle(Style.Fill); minutePaint = new Paint { Color = minuteColor, StrokeWidth = minuteWidth }; minutePaint.SetStyle(Style.Fill); secondPaint = new Paint { Color = secondColor, StrokeWidth = secondWidth }; secondPaint.SetStyle(Style.Fill); }
private float DpToPixels(float valueInDp) { DisplayMetrics metrics = Context.Resources.DisplayMetrics; return(TypedValue.ApplyDimension(ComplexUnitType.Dip, valueInDp, metrics)); }
protected override void InitExample() { var xAxis = new NumericAxis(Activity) { AutoRange = AutoRange.Always }; var leftAxis = new NumericAxis(Activity) { AxisAlignment = AxisAlignment.Left, AxisId = AxisAlignment.Left.Name() }; var rightAxis = new NumericAxis(Activity) { AxisAlignment = AxisAlignment.Right, AxisId = AxisAlignment.Right.Name() }; using (Surface.SuspendUpdates()) { Surface.XAxes.Add(xAxis); Surface.YAxes = new AxisCollection { leftAxis, rightAxis }; var initialColor = Color.Blue; for (var i = 0; i < SeriesCount; i++) { var alignment = i % 2 == 0 ? AxisAlignment.Left : AxisAlignment.Right; var dataSeries = GenerateDataSeries(alignment, i); var rs = new FastLineRenderableSeries { DataSeries = dataSeries, YAxisId = alignment.Name(), StrokeStyle = new PenStyle.Builder(Activity).WithColor(initialColor).WithThickness(2, ComplexUnitType.Dip).Build() }; // Colors are incremented for visual purposes only var newR = initialColor.R == 255 ? 255 : initialColor.R + 5; var newB = initialColor.B == 0 ? 0 : initialColor.B - 2; initialColor = Color.Argb(255, (byte)newR, initialColor.G, (byte)newB); Surface.RenderableSeries.Add(rs); } var selectedStrokeStyle = new PenStyle.Builder(Activity).WithColor(Color.White).WithThickness(4f).Build(); var selectedPointMarker = new EllipsePointMarker { Width = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 10, Context.Resources.DisplayMetrics), Height = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 10, Context.Resources.DisplayMetrics), FillStyle = new SolidBrushStyle(Color.Argb(0xFF, 0xFF, 0x00, 0xDC)), StrokeStyle = new PenStyle.Builder(Activity).WithColor(Color.White).WithThickness(1f).Build() }; Surface.ChartModifiers.Add(new SeriesSelectionModifier { SelectedSeriesStyle = new SelectedSeriesStyle(selectedStrokeStyle, selectedPointMarker) }); } }
public static float SpToPx(Context context, float sp) { return(TypedValue.ApplyDimension(ComplexUnitType.Sp, sp, context.Resources.DisplayMetrics)); }
private async void OnRequestOnboardingPage(OnboardingViewModel oVm) { _viewModel = oVm; AnimationInitUI(); BindEvents(); var mainAnimatorSet = new AnimatorSet(); var appNameLayoutFinalTopSpace = TypedValue.ApplyDimension(ComplexUnitType.Dip, 55.0f, Application.Context.Resources.DisplayMetrics); var decelerateInterpolator = new DecelerateInterpolator(1.0f); var appNameLayoutAnimator = new ValueAnimator(); appNameLayoutAnimator.SetDuration(750); appNameLayoutAnimator.SetInterpolator(decelerateInterpolator); appNameLayoutAnimator.SetFloatValues(_appNameLayout.GetY(), appNameLayoutFinalTopSpace); appNameLayoutAnimator.Update += (o, args) => { _appNameLayout.SetY((float)args.Animation.AnimatedValue); }; var whatAccountsAnimator = new ValueAnimator(); whatAccountsAnimator.SetDuration(750); whatAccountsAnimator.SetInterpolator(decelerateInterpolator); whatAccountsAnimator.SetFloatValues(0.0f, 1.0f); whatAccountsAnimator.Update += (o, args) => { _whatAccounts.Alpha = (float)args.Animation.AnimatedValue; }; var appNameAnimationSet = new AnimatorSet(); appNameAnimationSet.PlayTogether(appNameLayoutAnimator, whatAccountsAnimator); var socialButtonsAnimatorSet = new AnimatorSet(); var overshootInterpolator = new OvershootInterpolator(3f); var facebookButtonAnimator = new ValueAnimator(); facebookButtonAnimator.SetDuration(500); facebookButtonAnimator.SetInterpolator(overshootInterpolator); facebookButtonAnimator.SetFloatValues(_facebookButton.GetY() + _facebookButton.Height, _facebookButton.GetY()); facebookButtonAnimator.Update += (o, args) => { _facebookButton.SetY((float)args.Animation.AnimatedValue); _facebookButton.Alpha = args.Animation.AnimatedFraction; }; var twitterButtonAnimator = new ValueAnimator(); twitterButtonAnimator.SetDuration(500); twitterButtonAnimator.SetInterpolator(overshootInterpolator); twitterButtonAnimator.SetFloatValues(_facebookButton.GetY() + _facebookButton.Height, _facebookButton.GetY()); twitterButtonAnimator.Update += (o, args) => { _twitterButton.SetY((float)args.Animation.AnimatedValue); _twitterButton.Alpha = args.Animation.AnimatedFraction; }; socialButtonsAnimatorSet.PlaySequentially(facebookButtonAnimator, twitterButtonAnimator); socialButtonsAnimatorSet.StartDelay = 500; var letsGoButtonAnimator = new ValueAnimator(); letsGoButtonAnimator.SetDuration(500); letsGoButtonAnimator.SetInterpolator(decelerateInterpolator); letsGoButtonAnimator.SetFloatValues(0.0f, 1.0f); letsGoButtonAnimator.Update += (sender, args) => { _goButton.Alpha = (float)args.Animation.AnimatedValue; }; mainAnimatorSet.PlaySequentially(appNameAnimationSet, socialButtonsAnimatorSet, letsGoButtonAnimator); await _viewModel.DidLoad(); await Task.Delay(2000); mainAnimatorSet.Start(); await _viewModel.DidAppear(); }
public static int DpToPx(string dp, Context context) { return((int)TypedValue.ApplyDimension(ComplexUnitType.Dip, (float)Convert.ToDouble(dp), context.Resources.DisplayMetrics)); }
public float GetNativeSize(float size) { var displayMetrics = Android.App.Application.Context.Resources.DisplayMetrics; return(TypedValue.ApplyDimension(ComplexUnitType.Dip, size, displayMetrics)); }
// Calculates a screen dimension given a specified dimension in raw pixels internal static float CalculateScreenDimension(float pixels, ComplexUnitType screenUnitType = ComplexUnitType.Dip) { return(!DesignTime.IsDesignMode ? TypedValue.ApplyDimension(screenUnitType, pixels, GetDisplayMetrics()) : pixels); }
public static int GetPixelFromDp(Context context, float dp) { return((int)TypedValue.ApplyDimension(ComplexUnitType.Dip, dp, context.Resources.DisplayMetrics)); }
private int Dp2Px(int dp) { return((int)TypedValue.ApplyDimension(ComplexUnitType.Dip, dp, Context.Resources.DisplayMetrics)); }
internal static float ConvertToDp(double value) { return(TypedValue.ApplyDimension(ComplexUnitType.Dip, (float)value, DisplayMetrics)); }
private static int GetPX(Context context, int sizeDP) { return((int)TypedValue.ApplyDimension(ComplexUnitType.Dip, sizeDP, context.Resources.DisplayMetrics)); }
public static float ConvertToSp(double value) { return(TypedValue.ApplyDimension(ComplexUnitType.Sp, (float)value, _displayMetrics)); }
protected virtual int DpToPixels(int dp) { var value = TypedValue.ApplyDimension(ComplexUnitType.Dip, dp, this.Activity.Resources.DisplayMetrics); return(Convert.ToInt32(value)); }
public void Init(Context context, float y, float pinRadiusDp, int pinColor, Color textColor, float circleRadius, Color circleColor, float minFont, float maxFont, bool pinsAreTemporary) { this._res = context.Resources; this._pin = ContextCompat.GetDrawable(context, Resource.Drawable.rotate); this._density = this.Resources.DisplayMetrics.Density; this._minPinFont = minFont / this._density; this._maxPinFont = maxFont / this._density; this._pinsAreTemporary = pinsAreTemporary; this._pinPadding = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 15, this._res.DisplayMetrics); this._circleRadiusPx = circleRadius; this._textYPadding = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 3.5f, this._res.DisplayMetrics); // If one of the attributes are set, but the others aren't, set the // attributes to default if (Math.Abs(pinRadiusDp - -1) < 0) { this._pinRadiusPx = (int) TypedValue.ApplyDimension(ComplexUnitType.Dip, _defaultThumbRadiusDp, this._res.DisplayMetrics); } else { this._pinRadiusPx = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, pinRadiusDp, this._res.DisplayMetrics); } // Set text size in px from dp var textSize = (int)TypedValue.ApplyDimension(ComplexUnitType.Sp, 15, this._res.DisplayMetrics); // Creates the paint and sets the Paint values this._textPaint = new Paint { Color = textColor, AntiAlias = true, TextSize = textSize }; // Creates the paint and sets the Paint values this._circlePaint = new Paint { Color = circleColor, AntiAlias = true }; //Color filter for the selection pin this._pinFilter = new LightingColorFilter(pinColor, pinColor); // Sets the minimum touchable area, but allows it to expand based on // image size var targetRadius = (int)Math.Max(_minimumTargetRadiusDp, this._pinRadiusPx); this._targetRadiusPx = TypedValue.ApplyDimension(ComplexUnitType.Dip, targetRadius, this._res.DisplayMetrics); this._y = y; }
/** * 根据dip值转化成px值 * * @param context * @param dip * @return */ public static int DipToPix(Context context, int dip) { int size = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, dip, context.Resources.DisplayMetrics); return(size); }
protected void ZoomToAll() { if (MarkerSet?.MarkerWrappers?.Any() ?? false) { var boundsBuilder = new LatLngBounds.Builder(); foreach (var markerWrapper in MarkerSet.MarkerWrappers) { boundsBuilder.Include(markerWrapper.Position); } var bounds = CameraUpdateFactory.NewLatLngBounds(boundsBuilder.Build(), (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 70, Context.Resources.DisplayMetrics)); Map.AnimateCamera(bounds); } }
private int ConvertToPx(int dp) { var px = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, dp, Context.Resources.DisplayMetrics); return(px); }
/// <summary> /// Converts the dp to px. /// </summary> /// <param name="context">The context.</param> /// <param name="dp">The dp.</param> /// <returns></returns> private Int32 ConvertDpToPx(Context context, Single dp) => (Int32)TypedValue.ApplyDimension(ComplexUnitType.Dip, dp, context.Resources.DisplayMetrics);
/// <summary> /// <see cref="MyWatchFaceEngine"/>のインスタンスが生成された時に実行します。 /// </summary> /// <param name="holder">ディスプレイ表面を表すオブジェクト</param> public override void OnCreate(ISurfaceHolder holder) { // TODO : ここでは主に、以下の処理を行います。 // ・リソースから画像の読み込み // ・Paintなどのグラフィックスオブジェクトを生成 // ・時刻を格納するオブジェクトの作成 // ・システムのUI(インジケーターやOK Googleの表示など)の設定 // システムのUIの配置方法を設定します。 SetWatchFaceStyle( new WatchFaceStyle.Builder(owner) #region ウォッチフェイスのスタイルの設定 // ユーザーからのタップイベントを有効にするかどうか設定します。 // true : 有効 // false : 無効(デフォルト) //.SetAcceptsTapEvents( true ) // 通知が来た時の通知カードの高さを設定します。 // WatchFaceStyle.PeekModeShort : 通知カードをウィンドウの下部に小さく表示します。(デフォルト) // WatchFaceStyle.PeekModeVariable : 通知カードをウィンドウの全面に表示します。 // 注: Android Wear 2.0では、この設定は使用されません。 .SetCardPeekMode(WatchFaceStyle.PeekModeShort) // 通知カードの背景の表示方法を設定します。 // WatchFaceStyle.BackgroundVisibilityInterruptive : 電話の着信など一部の通知のみ、背景を用事します。(デフォルト) // WatchFaceStyle.BackgroundVisibilityPersistent : 通知カードの種類にかかわらず、その背景を常に表示します。 // 注: Android Wear 2.0では、この設定は使用されません。 .SetBackgroundVisibility(WatchFaceStyle.BackgroundVisibilityInterruptive) // アンビエントモード時に通知カードを表示するかどうかを設定します。 // WatchFaceStyle.AmbientPeekModeVisible : 通知カードを表示します。(デフォルト) // WatchFaceStyle.AmbientPeekModeHidden : 通知カードを表示しません。 // 注: Android Wear 2.0では、この設定は使用されません。 //.SetAmbientPeekMode( WatchFaceStyle.AmbientPeekModeHidden ) // システムUIのデジタル時計を表示するするかどうかを設定します。(使用している例として、デフォルトで用意されている「シンプル」があります。) // true : 表示 // false : 非表示(デフォルト) .SetShowSystemUiTime(false) // ステータスアイコンなどに背景を付けるかどうかを設定します。 // デフォルト : ステータスアイコンなどに背景を表示しません。 // WatchFaceStyle.ProtectStatusBar : ステータスアイコンに背景を表示します。 // WatchFaceStyle.ProtectHotwordIndicator : 「OK Google」に背景を表示します。 // WatchFaceStyle.ProtectWholeScreen : ウォッチフェイスの背景を少し暗めにします。 // ※パラメーターは論理和で組み合わせることができます。 //.SetViewProtectionMode( WatchFaceStyle.ProtectStatusBar | WatchFaceStyle.ProtectHotwordIndicator ) // 通知カードを透明にするかどうかを設定します。 // WatchFaceStyle.PeekOpacityModeOpaque : 不透明(デフォルト) // WatchFaceStyle.PeekOpacityModeTranslucent : 透明 // 注: Android Wear 2.0では、この設定は使用されません。 //.SetPeekOpacityMode( WatchFaceStyle.PeekOpacityModeTranslucent ) // ステータスアイコンや「OK Google」の位置を設定します。 // GravityFlags.Top | GravityFlags.Left : 左上(角形のデフォルト) // GravityFlags.Top | GravityFlags.Center : 上部の中央(丸形のデフォルト) // 注 : GravityFlagsは列挙体なので、int型にキャストします。 //.SetStatusBarGravity( ( int )( GravityFlags.Top | GravityFlags.Center ) ) //.SetHotwordIndicatorGravity( ( int )( GravityFlags.Top | GravityFlags.Center ) ) #endregion // 設定したスタイル情報をビルドします。このメソッドは最後に呼び出します。 .Build() ); // ベースクラスのOnCreateメソッドを実行します。 base.OnCreate(holder); #region 最新のAndroid SDKにおける、Android.Content.Res.Resources.GetColorメソッドについて /* * Android.Content.Res.Resources.GetColorメソッドは、Android SDK Level 23以降で非推奨(Deprecated)となっています。 * 代わりの方法として、Android.Support.V4.Content.ContextCompat.GetColorメソッドを使用します。 * * [CanvasWatchFaceServiceオブジェクト].Resources.GetColor( Resource.Color.[リソース名] ); * ↓ * ContextCompat.GetColor( [CanvasWatchFaceServiceオブジェクト], Resource.Color.[リソース名] ); * ※CanvasWatchFaceServiceクラスはContextクラスを継承しています。 * * なお、ContextCompat.GetColorの戻り値はColor型でなく、ARGB値を格納したint型となります。 * Chronoir_net.Chronica.WatchfaceExtension.WatchfaceUtility.ConvertARGBToColor( int )メソッドで、Color型に変換することができます。 */ #endregion var resources = owner.Resources; // 日付、バッテリー残量のフォントを設定します。 textPaintForDate = new Paint { TextSize = TypedValue.ApplyDimension( ComplexUnitType.Dip, resources.GetDimension(Resource.Dimension.text_date_font), owner.Resources.DisplayMetrics ), AntiAlias = true, Color = Color.White, // 中央ぞろえ TextAlign = Paint.Align.Center }; textPaintForDayOfWeek = new Paint(textPaintForDate) { TextSize = TypedValue.ApplyDimension( ComplexUnitType.Dip, resources.GetDimension(Resource.Dimension.text_day_of_week_font), owner.Resources.DisplayMetrics ) }; textPaintForBatt = new Paint(textPaintForDate) { TextSize = TypedValue.ApplyDimension( ComplexUnitType.Dip, resources.GetDimension(Resource.Dimension.text_batt_font), owner.Resources.DisplayMetrics ) }; // 背景用のグラフィックスオブジェクトを生成します。 bitmapPaint = new Paint { Color = WatchfaceUtility.ConvertARGBToColor(ContextCompat.GetColor(owner.BaseContext, Resource.Color.background)), FilterBitmap = true }; matrix = new Matrix(); // 時刻を格納するオブジェクトを生成します。 // Time ( Android ) //nowTime = new Time(); // Calendar ( Java ) //nowTime = Java.Util.Calendar.GetInstance( Java.Util.TimeZone.Default ); // DateTime ( C# ) // DateTime構造体は値型なので、オブジェクトの生成はは不要です。 }
private void GetDataArticles() { try { ArticleData = JsonConvert.DeserializeObject <ArticleDataObject>(Intent?.GetStringExtra("ArticleObject") ?? ""); if (ArticleData != null) { GlideImageLoader.LoadImage(this, ArticleData.Author.Avatar, ImageUser, ImageStyle.CircleCrop, ImagePlaceholders.Drawable); GlideImageLoader.LoadImage(this, ArticleData.Thumbnail, ImageBlog, ImageStyle.CenterCrop, ImagePlaceholders.Drawable); TxtUsername.Text = WoWonderTools.GetNameFinal(ArticleData.Author); TxtTitle.Text = Methods.FunString.DecodeString(ArticleData.Title); TxtViews.Text = ArticleData.View + " " + GetText(Resource.String.Lbl_Views); string style = AppSettings.SetTabDarkTheme ? "<style type='text/css'>body{color: #fff; background-color: #282828;}</style>" : "<style type='text/css'>body{color: #444; background-color: #FFFAFA;}</style>"; string imageFullWidthStyle = "<style>img{display: inline;height: auto;max-width: 100%;}</style>"; // This method is deprecated but need to use for old os devices #pragma warning disable CS0618 // Type or member is obsolete string content = Build.VERSION.SdkInt >= BuildVersionCodes.N ? Html.FromHtml(ArticleData.Content, FromHtmlOptions.ModeCompact)?.ToString() : Html.FromHtml(ArticleData.Content)?.ToString(); #pragma warning restore CS0618 // Type or member is obsolete DataWebHtml = "<!DOCTYPE html>"; DataWebHtml += "<head><title></title>" + style + imageFullWidthStyle + "</head>"; DataWebHtml += "<body>" + content + "</body>"; DataWebHtml += "</html>"; // <meta name='viewport' content='width=device-width, user-scalable=no' /> TxtHtml.SetWebViewClient(new MyWebViewClient(this)); TxtHtml.Settings.LoadsImagesAutomatically = true; TxtHtml.Settings.JavaScriptEnabled = true; TxtHtml.Settings.JavaScriptCanOpenWindowsAutomatically = true; TxtHtml.Settings.SetLayoutAlgorithm(WebSettings.LayoutAlgorithm.TextAutosizing); TxtHtml.Settings.DomStorageEnabled = true; TxtHtml.Settings.AllowFileAccess = true; TxtHtml.Settings.DefaultTextEncodingName = "utf-8"; TxtHtml.Settings.UseWideViewPort = (true); TxtHtml.Settings.LoadWithOverviewMode = (true); TxtHtml.Settings.SetSupportZoom(false); TxtHtml.Settings.BuiltInZoomControls = (false); TxtHtml.Settings.DisplayZoomControls = (false); int fontSize = (int)TypedValue.ApplyDimension(ComplexUnitType.Sp, 18, Resources?.DisplayMetrics); TxtHtml.Settings.DefaultFontSize = fontSize; TxtHtml.LoadDataWithBaseURL(null, DataWebHtml, "text/html", "UTF-8", null); bool success = int.TryParse(ArticleData.Posted, out var number); if (success) { TxtTime.Text = Methods.Time.TimeAgo(number, false); } else { TxtTime.Text = ArticleData.Posted; } if (Methods.CheckConnectivity()) { PollyController.RunRetryPolicyFunction(new List <Func <Task> > { () => RequestsAsync.Article.GetBlogById(ArticlesId) }); } } } catch (Exception e) { Methods.DisplayReportResultTrack(e); } }
public int convertDpToPixel(Context context, int v) { return((int)TypedValue.ApplyDimension(ComplexUnitType.Dip, v, context.Resources.DisplayMetrics)); }
public InfoPaneFabBehavior(Context context, IAttributeSet attrs) : base(context, attrs) { minMarginBottom = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 16, context.Resources.DisplayMetrics); }
private float DpToPx(float dp) { return(TypedValue.ApplyDimension(ComplexUnitType.Dip, dp, Resources.DisplayMetrics)); }
/// <inheritdoc /> public bool OnTouch(View v, MotionEvent e) { // Get x/y coordinates of touch location var touchX = e.RawX; var touchY = e.RawY; var isTouchHandled = _isMinThumbFocused || _isMaxThumbFocused; var minTargetSize = TypedValue.ApplyDimension(ComplexUnitType.Dip, 44f, ViewExtensions.GetDisplayMetrics()); var minThumbBounds = GetBounds(MinimumThumb, minTargetSize, minTargetSize); var maxThumbBounds = GetBounds(MaximumThumb, minTargetSize, minTargetSize); switch (e.Action) { case MotionEventActions.Down: _isMinThumbFocused = minThumbBounds.Contains(touchX, touchY); _isMaxThumbFocused = maxThumbBounds.Contains(touchX, touchY); if (_isMinThumbFocused && !IsStartTimePinned) { _lastX = touchX - minThumbBounds.Left; isTouchHandled = true; } if (_isMaxThumbFocused && !IsEndTimePinned) { _lastX = touchX - maxThumbBounds.Left; isTouchHandled = true; } break; case MotionEventActions.Move: if (!_isMinThumbFocused && !_isMaxThumbFocused && !(_isMinThumbFocused && IsStartTimePinned) && !(_isMaxThumbFocused && IsEndTimePinned)) { return(isTouchHandled); } View trackedThumb = null; if (_isMinThumbFocused && _isMaxThumbFocused) { var maxThumbTranslateX = touchX - maxThumbBounds.Left - _lastX; // Gesture was within both min and max thumb, so let the direction of the gesture determine which thumb should be dragged if (maxThumbTranslateX < 0) { // Gesture is moving thumb toward the min, so put focus on min thumb trackedThumb = MinimumThumb; _isMaxThumbFocused = false; } else { // Gesture is moving thumb toward the max, so put focus on max thumb trackedThumb = MaximumThumb; _isMinThumbFocused = false; } } else if (_isMinThumbFocused) { trackedThumb = MinimumThumb; } else if (_isMaxThumbFocused) { trackedThumb = MaximumThumb; } var currentThumbX = touchX - trackedThumb.Left; var translateX = currentThumbX - _lastX; if (_isMinThumbFocused) { OnMinimumThumbDrag(translateX); } if (_isMaxThumbFocused) { OnMaximumThumbDrag(translateX); } break; case MotionEventActions.Up: _isMinThumbFocused = false; _isMaxThumbFocused = false; OnDragCompleted(); break; } return(isTouchHandled); }
public static float DpToPixels(Context context, float valueInDp) { DisplayMetrics metrics = context.Resources.DisplayMetrics; return(TypedValue.ApplyDimension(ComplexUnitType.Dip, valueInDp, metrics)); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); if (Bootlegger.BootleggerClient.CurrentEvent == null) { Finish(); return; } CurrentEvent = Bootlegger.BootleggerClient.CurrentEvent; SetTheme(Resource.Style.Theme_Normal); SetContentView(Resource.Layout.Review); //AndHUD.Shared.Show(this, Resources.GetString(Resource.String.loading), -1, MaskType.Black, null, null, true); Android.Support.V7.Widget.Toolbar toolbar = FindViewById <Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar); SetSupportActionBar(toolbar); SupportActionBar.SetDisplayHomeAsUpEnabled(true); Window.ClearFlags(WindowManagerFlags.TranslucentStatus); if (Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop) { // add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds); // finally change the color Window.SetStatusBarColor(new Color(ContextCompat.GetColor(this, Android.Resource.Color.Transparent))); } //FindViewById<TextView>(Resource.Id.customTitle).Text = CurrentEvent.name; FindViewById <CollapsingToolbarLayout>(Resource.Id.collapsing_toolbar).SetTitle(CurrentEvent.name); FindViewById <CollapsingToolbarLayout>(Resource.Id.collapsing_toolbar).SetExpandedTitleTextAppearance(Resource.Style.ExpandedAppBar); Typeface font = ResourcesCompat.GetFont(this, Resource.Font.montserratregular); FindViewById <CollapsingToolbarLayout>(Resource.Id.collapsing_toolbar).CollapsedTitleTypeface = font; FindViewById <CollapsingToolbarLayout>(Resource.Id.collapsing_toolbar).ExpandedTitleTypeface = font; FindViewById <AppBarLayout>(Resource.Id.appbar).SetExpanded(false, false); if (!string.IsNullOrEmpty(CurrentEvent.iconbackground) && !WhiteLabelConfig.REDUCE_BANDWIDTH) { Picasso.With(this).Load(CurrentEvent.iconbackground).CenterCrop().Fit().MemoryPolicy(MemoryPolicy.NoCache, MemoryPolicy.NoStore).Tag(this).Into(FindViewById <ImageView>(Resource.Id.defaultback), new Action(() => { var bitmap = ((BitmapDrawable)FindViewById <ImageView>(Resource.Id.defaultback).Drawable).Bitmap; Palette palette = Palette.From(bitmap).Generate(); int vibrant = palette.GetLightVibrantColor(0); if (vibrant == 0) { vibrant = palette.GetMutedColor(0); } int dark = palette.GetVibrantColor(0); if (dark == 0) { dark = palette.GetLightMutedColor(0); } //FindViewById<CollapsingToolbarLayout>(Resource.Id.collapsing_toolbar).SetContentScrimColor(vibrant); //FindViewById<CollapsingToolbarLayout>(Resource.Id.collapsing_toolbar).SetStatusBarScrimColor(dark); }), null); } else { Picasso.With(this).Load(Resource.Drawable.user_back).CenterCrop().Fit().Into(FindViewById <ImageView>(Resource.Id.defaultback)); //FindViewById<CollapsingToolbarLayout>(Resource.Id.collapsing_toolbar).SetContentScrimColor(Color.Transparent); //FindViewById<CollapsingToolbarLayout>(Resource.Id.collapsing_toolbar).SetStatusBarScrimColor(dark); } FindViewById <TextView>(Resource.Id.organisedby).Text = CurrentEvent.organisedby; Picasso.With(this).Load(CurrentEvent.organiserprofile.Replace("sz=50", "")).Tag(this).Fit().Transform(new CircleTransform()).Into(FindViewById <ImageView>(Resource.Id.imgGravatar)); FindViewById <TextView>(Resource.Id.contributors).Text = Java.Lang.String.Format("%d", CurrentEvent.numberofcontributors); FindViewById <TextView>(Resource.Id.contributions).Text = Java.Lang.String.Format("%d", CurrentEvent.numberofclips); _pager = FindViewById <ViewPager>(Resource.Id.tabpager); capture = FindViewById <FloatingActionButton>(Resource.Id.capture); newedit = FindViewById <FloatingActionButton>(Resource.Id.newedit); newtag = FindViewById <FloatingActionButton>(Resource.Id.newtag); capture.Click += CaptureClick; newedit.Click += Review_Click; newtag.Click += Newtag_Click; var dip16 = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 16, Resources.DisplayMetrics); capture.LayoutParameters = new CoordinatorLayout.LayoutParams(capture.LayoutParameters) { Behavior = new MyFABAwareScrollingViewBehavior(this, capture, 0, _pager), Gravity = (int)(GravityFlags.End | GravityFlags.Right | GravityFlags.Bottom), MarginEnd = dip16, BottomMargin = dip16 }; newtag.LayoutParameters = new CoordinatorLayout.LayoutParams(newtag.LayoutParameters) { Behavior = new MyFABAwareScrollingViewBehavior(this, newtag, 1, _pager), Gravity = (int)(GravityFlags.End | GravityFlags.Right | GravityFlags.Bottom), MarginEnd = dip16, BottomMargin = dip16 }; newedit.LayoutParameters = new CoordinatorLayout.LayoutParams(newedit.LayoutParameters) { Behavior = new MyFABAwareScrollingViewBehavior(this, newedit, 2, _pager), Gravity = (int)(GravityFlags.End | GravityFlags.Right | GravityFlags.Bottom), MarginEnd = dip16, BottomMargin = dip16 }; _tabs = FindViewById <Android.Support.Design.Widget.TabLayout>(Resource.Id.tabs); _tabs.TabGravity = 0; _tabs.TabMode = 1; _adapter = new ReviewPageAdapter(SupportFragmentManager, this); _pager.Adapter = _adapter; if (savedInstanceState == null) { myclips = new MyClipsFragment(this); myclips.OnPreview += Myclips_OnPreview; myclips.OnRefresh += Myclips_OnRefresh; myclips.OnEventInfoUpdate += Myclips_OnEventInfoUpdate; myclips.OnStartUpload += Myclips_OnStartUpload; myedits = new MyEditsFragment(); myedits.OnOpenEdit += Myedits_OnOpenEdit; myedits.OnPreview += Myedits_OnPreview; myingest = new AllClipsFragment(AllClipsFragment.ClipViewMode.LIST); myingest.OnPreview += Myingest_OnPreview; } else { myclips = SupportFragmentManager.FindFragmentByTag("android:switcher:" + Resource.Id.tabpager + ":0") as MyClipsFragment; myclips.OnPreview += Myclips_OnPreview; myclips.OnRefresh += Myclips_OnRefresh; myclips.OnEventInfoUpdate += Myclips_OnEventInfoUpdate; myclips.OnStartUpload += Myclips_OnStartUpload; myingest = SupportFragmentManager.FindFragmentByTag("android:switcher:" + Resource.Id.tabpager + ":1") as AllClipsFragment; myingest.ChooserMode = AllClipsFragment.ClipViewMode.LIST; myingest.OnPreview += Myingest_OnPreview; myedits = SupportFragmentManager.FindFragmentByTag("android:switcher:" + Resource.Id.tabpager + ":2") as MyEditsFragment; if (myedits == null) { myedits = new MyEditsFragment(); } myedits.OnOpenEdit += Myedits_OnOpenEdit; myedits.OnPreview += Myedits_OnPreview; } //myedits.Reattach(); _adapter.AddTab(GetString(Resource.String.videos), myclips, ReviewPageAdapter.TabType.CLIPS); _adapter.AddTab(GetString(Resource.String.tagging), myingest, ReviewPageAdapter.TabType.INGEST); _adapter.AddTab(GetString(Resource.String.edits), myedits, ReviewPageAdapter.TabType.EDITS); _pager.Post(() => { _tabs.SetupWithViewPager(_pager); }); _pager.PageSelected += _pager_PageSelected; if (Intent?.GetBooleanExtra("needsperms", false) ?? false) { LoginFuncs.ShowError(this, new NeedsPermissionsException()); } }