gpt4 book ai didi

android - 在播放视频时调整/缩小 YouTubePlayerFragment

转载 作者:太空狗 更新时间:2023-10-29 13:22:30 24 4
gpt4 key购买 nike

我正在尝试在 Youtube 应用程序中复制视频最小化,如图所示 here .为了实现这一点,我尝试使用 Draggable Panel图书馆。当我运行示例时,我注意到视频在播放过程中最小化时不会缩放,而是会裁剪。当视频停止(未暂停)并显示缩略图时, View 会按预期缩放。我读到另一个问题,YouTubePlayerView 是用 SurfaceView 实现的。我还在文档中读到 SurfaceView 的行为不同于普通 View ,因为它如何在屏幕上打洞。我相信因为 YoutubePlayerView 是基于 SurfaceView 的,所以它不能正确缩放。如何在播放期间正确缩放 YoutubePlayerView 中播放的视频以匹配其父布局的大小?

最佳答案

根据我使用 YouTubePlayerView 和 YouTubePlayerFragment 的经验,我发现使用 Nineoldandroids 或 ViewPropertyAnimator 进行缩放无法正常工作。为了调整播放视频的大小,您必须以编程方式设置布局参数的高度和宽度。在 DraggablePanel 库中有两个类可以改变顶 View 的大小。默认值是 ScaleTransformer,它在播放期间不适用于视频,因为它会将正在播放的视频的一部分从 View 中裁剪掉,另一个是 ResizeTransformer。 ResizeTransformer 不如 ScaleTransformer 平滑,但它在一定程度上起作用。 ResizeTransformer 的问题是 YouTubePlayerView 的布局在被拖动时有时会夹在底部 View 下。然后播放停止,因为它检测到一个 View 与其重叠。我做出了妥协,去掉了 DraggablePanel 并为 YouTubePlayerView 的容器编写了最大化和最小化方法。

public void minimize() {
RelativeLayout.LayoutParams playerParams =
(RelativeLayout.LayoutParams) playerView.getLayoutParams();
playerParams.width = getResources().getDimensionPixelSize(R.dimen.player_minimized_width);
playerParams.height = getResources().getDimensionPixelSize(R.dimen.player_minimized_height);
FrameLayout container = (FrameLayout)playerView.getParent().getParent();
RelativeLayout.LayoutParams containerParams = (RelativeLayout.LayoutParams)container.getLayoutParams();
containerParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
containerParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
containerParams.bottomMargin = getResources().getDimensionPixelSize(R.dimen.player_minimized_margin);
containerParams.rightMargin = getResources().getDimensionPixelSize(R.dimen.player_minimized_margin);
playerView.requestLayout();
container.requestLayout();
isMinimized = true;
}

public void maximize() {
RelativeLayout.LayoutParams playerParams =
(RelativeLayout.LayoutParams) playerView.getLayoutParams();
playerParams.width = RelativeLayout.LayoutParams.MATCH_PARENT;
playerParams.height = getResources().getDimensionPixelSize(R.dimen.player_height);
FrameLayout container = (FrameLayout)playerView.getParent().getParent();
RelativeLayout.LayoutParams containerParams = (RelativeLayout.LayoutParams)container.getLayoutParams();
containerParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM,0);
containerParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT,0);
containerParams.bottomMargin = 0;
containerParams.rightMargin = 0;
playerView.requestLayout();
container.requestLayout();
isMinimized = false;
}

关于android - 在播放视频时调整/缩小 YouTubePlayerFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26830310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com