-
Notifications
You must be signed in to change notification settings - Fork 401
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix MediaElement Layout for Android #1873
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…cant refactoring to enhance layout management and simplify the handling of fullscreen mode for the media player. The key modifications include transitioning to a `RelativeLayout` for better flexibility in positioning the `StyledPlayerView`, removing explicit player size management in favor of relying on layout parameters, and streamlining the process for entering and exiting fullscreen mode. These adjustments lead to a more readable and maintainable codebase, with improved centering and sizing of the player view. ### Summary of Changes: 1. **Refactoring to Use RelativeLayout**: Transitioned the layout management of the `StyledPlayerView` from a `CoordinatorLayout` to a `RelativeLayout` for improved flexibility in positioning and sizing. This change allows for easier adjustments and better control over the player view's layout within the media element. - *Code Change*: Refactored `MauiMediaElement` to incorporate `RelativeLayout`. 2. **Removal of Player Size Management**: Eliminated the explicit management of the player's height and width variables, relying instead on the layout parameters of the `RelativeLayout` and `StyledPlayerView` for size adjustments. This simplification removes unnecessary code and leverages the layout system for resizing. - *Code Change*: Removed `playerHeight` and `playerWidth` variables and related size management code. 3. **Adjustments for Fullscreen Mode**: Simplified the handling of fullscreen mode by adding the player view directly to the window's decor view in fullscreen, and leveraging the `RelativeLayout` for re-adding the player view when exiting fullscreen. This approach minimizes the need for manual layout parameter adjustments. - *Code Change*: Updated fullscreen mode handling to use window's decor view and `RelativeLayout`. 4. **Simplification of Layout Management**: By using a `RelativeLayout`, the process of adding and removing the player view during fullscreen transitions has been streamlined, making the code more readable and the transitions smoother. - *Code Change*: Simplified layout management code for fullscreen transitions. 5. **Enhanced Centering of Player View**: Configured the `RelativeLayout` with layout parameters that ensure the `StyledPlayerView` is centered within the `MauiMediaElement`, particularly in fullscreen mode, by setting the gravity to `GravityFlags.Center`. - *Code Change*: Set `RelativeLayout` gravity to center the `StyledPlayerView`. These changes collectively enhance the layout management of the media player, making the codebase more maintainable and the player's behavior more predictable and consistent, especially in terms of handling fullscreen mode and player view positioning.
… initialization and layout parameter setting of `RelativeLayout`, adjusting the handling of fullscreen mode transitions, optimizing system bars visibility management, and general code cleanup for simplification and efficiency. These changes aim to enhance the clarity, maintainability, and functionality of the media player component, particularly in its layout setup and fullscreen behavior. ### Summary of Changes: 1. **Refactoring RelativeLayout Initialization and Layout Parameters:** - Simplified the process of setting up a `RelativeLayout` by directly assigning `RelativeLayout.LayoutParams` with predefined rules (`CenterInParent`, `CenterVertical`, and `CenterHorizontal`) during its instantiation, making the layout intentions clearer and the setup more efficient. 2. **Adjustment in Fullscreen Mode Handling:** - Standardized the approach to transitioning into and out of fullscreen mode by consistently adding or removing the `relativeLayout` (containing the `playerView`) to the `layout`, improving the maintainability and consistency of fullscreen functionality. 3. **System Bars Visibility Management:** - Optimized the management of system bars' visibility by moving the call to `SetSystemBarsVisibility()` outside of conditional blocks, ensuring consistent updates in both entering and exiting fullscreen scenarios, and reducing redundant code. 4. **Code Cleanup and Simplification:** - Removed unnecessary lines and steps, such as duplicated variable declarations and redundant view manipulations, contributing to a cleaner and more understandable codebase. These changes collectively contribute to a more streamlined, efficient, and maintainable codebase, particularly enhancing the handling of layout parameters and fullscreen mode transitions for the media player component.
…n the `MauiMediaElement` constructor within the `MauiMediaElement.android.cs` file. This modification aims to streamline the code by eliminating unnecessary repetition, specifically the assignment of `LayoutParameters` to `relativeLayout`, which is already addressed during its initialization. ### Summary of Change: - **Redundancy Elimination in `MauiMediaElement`**: The specific line `relativeLayout.LayoutParameters = layout;` was removed from the constructor in the `MauiMediaElement.android.cs` file. This adjustment was made to remove redundant code, enhancing the clarity and efficiency of the codebase by avoiding the duplicate setting of `LayoutParameters` for `relativeLayout`. ### Detailed Change: - **File**: `MauiMediaElement.android.cs` - **Change**: Removed the line `relativeLayout.LayoutParameters = layout;` from the constructor of `MauiMediaElement`. - **Reason**: This line was deemed redundant as the `LayoutParameters` were already specified during the initialization of `relativeLayout`, making this explicit assignment unnecessary.
brminnick
approved these changes
Jun 5, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of Change
The primary changes to the
MauiMediaElement
class involve a significant refactoring to enhance layout management and simplify the handling of fullscreen mode for the media player. The key modifications include transitioning to aRelativeLayout
for better flexibility in positioning theStyledPlayerView
, removing explicit player size management in favor of relying on layout parameters, and streamlining the process for entering and exiting fullscreen mode. These adjustments lead to a more readable and maintainable codebase, with improved centering and sizing of the player view.Summary of Changes:
Refactoring to Use RelativeLayout: Transitioned the layout management of the
StyledPlayerView
from aCoordinatorLayout
to aRelativeLayout
for improved flexibility in positioning and sizing. This change allows for easier adjustments and better control over the player view's layout within the media element.MauiMediaElement
to incorporateRelativeLayout
.Removal of Player Size Management: Eliminated the explicit management of the player's height and width variables, relying instead on the layout parameters of the
RelativeLayout
andStyledPlayerView
for size adjustments. This simplification removes unnecessary code and leverages the layout system for resizing.playerHeight
andplayerWidth
variables and related size management code.Adjustments for Fullscreen Mode: Simplified the handling of fullscreen mode by adding the player view directly to the window's decor view in fullscreen, and leveraging the
RelativeLayout
for re-adding the player view when exiting fullscreen. This approach minimizes the need for manual layout parameter adjustments.RelativeLayout
.Simplification of Layout Management: By using a
RelativeLayout
, the process of adding and removing the player view during fullscreen transitions has been streamlined, making the code more readable and the transitions smoother.Enhanced Centering of Player View: Configured the
RelativeLayout
with layout parameters that ensure theStyledPlayerView
is centered within theMauiMediaElement
, particularly in fullscreen mode, by setting the gravity toGravityFlags.Center
.RelativeLayout
gravity to center theStyledPlayerView
.These changes collectively enhance the layout management of the media player, making the codebase more maintainable and the player's behavior more predictable and consistent, especially in terms of handling fullscreen mode and player view positioning.
Linked Issues
PR Checklist
approved
(bug) orChampioned
(feature/proposal)main
at time of PRAdditional information
Fixes previous PR that I put out. My bad!
Sample Android 34.0
Android34LayoutFix.mp4
Sample Android 26.0
Android26LayoutFix.mp4