public void onFlipped(FlippingView view) { imageWallView.ShowImage(flippingCol, flippingRow); flippingView.Visibility = ViewStates.Invisible; if (activityResumed) { LoadNextThumbnail(); if (state.Equals(State.VIDEO_BEING_FLIPPED_OUT)) { state = State.VIDEO_FLIPPED_OUT; } else if (state.Equals(State.VIDEO_CUED)) { videoCol = flippingCol; videoRow = flippingRow; playerView.SetX(imageWallView.GetXPosition(flippingCol, flippingRow)); playerView.SetY(imageWallView.GetYPosition(flippingCol, flippingRow)); imageWallView.HideImage(flippingCol, flippingRow); playerView.Visibility = ViewStates.Visible; player.Play(); state = State.VIDEO_PLAYING; } else if (state.Equals(State.LOADING_THUMBNAILS) && imageWallView.AllImagesLoaded()) { state = State.VIDEO_FLIPPED_OUT; // trigger flip in of an initial video flippingView.SetFlipDuration(FLIP_DURATION_MILLIS); flipDelayHandler.SendEmptyMessage(0); } } }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); state = State.UNINITIALIZED; ViewGroup viewFrame = new FrameLayout(this); DisplayMetrics displayMetrics = Resources.DisplayMetrics; int maxAllowedNumberOfRows = (int)Math.Floor( (displayMetrics.HeightPixels / displayMetrics.Density) / PLAYER_VIEW_MINIMUM_HEIGHT_DP); int numberOfRows = Math.Min(maxAllowedNumberOfRows, MAX_NUMBER_OF_ROWS_WANTED); int interImagePaddingPx = (int)displayMetrics.Density * INTER_IMAGE_PADDING_DP; int imageHeight = (displayMetrics.HeightPixels / numberOfRows) - interImagePaddingPx; int imageWidth = (int)(imageHeight * THUMBNAIL_ASPECT_RATIO); imageWallView = new ImageWallView(this, imageWidth, imageHeight, interImagePaddingPx); viewFrame.AddView(imageWallView, ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent); thumbnailView = new YouTubeThumbnailView(this); thumbnailView.Initialize(DeveloperKey.DEVELOPER_KEY, this); flippingView = new FlippingView(this, this, imageWidth, imageHeight); flippingView.SetFlipDuration(INITIAL_FLIP_DURATION_MILLIS); viewFrame.AddView(flippingView, imageWidth, imageHeight); playerView = new FrameLayout(this); playerView.Id = Resource.Id.player_view; playerView.Visibility = ViewStates.Invisible; viewFrame.AddView(playerView, imageWidth, imageHeight); playerFragment = YouTubePlayerFragment.NewInstance(); playerFragment.Initialize(DeveloperKey.DEVELOPER_KEY, this); FragmentManager.BeginTransaction().Add(Resource.Id.player_view, playerFragment).Commit(); flipDelayHandler = new FlipDelayHandler() { HandleMessageAction = (msg) => { FlipNext(); } }; SetContentView(viewFrame); }