MediaController 不尊重视图的动画
MediaController doesn't respect view's animation
问题说明了一切,MediaController 不跟随应用于视图的动画。
我有一个 RelativeLayout,里面有一个 VideoView。 MediaController 锚定到此 VideoView。现在,在 activity 中,我用一些动画(比如从右到左)将相对布局带到屏幕上。布局中的所有内容,如 textview,videoview 都可以完美地进行动画处理,但 MediaController 却没有。它不是与 VideoView 一起从右到左出现,而是出现在屏幕之间,而 VideoView 仍然从右到左出现。
有没有办法强制将动画应用到 MediaController。
最小结构 ->
RelativeLayout
|
|--- TextView
|--- VideoView + MediaController
|--- Some other view
我在相关布局上应用动画。
rtlAnim = AnimationUtils.loadAnimation(activity, R.anim.right_to_left);
relativeLayout.startAnimation(rtlAnim);
right_to_left.xml :
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="500"/>
</set>
任何帮助将不胜感激。
PS :一旦 videoview 准备好,我就会显示媒体控制器。
videoView.setOnPreparedListener(mediaPlayer -> mediaController.show());
使用 here 中的以下代码解决了它。由于 mediaController 将控件放置在浮动 window 中,因此我们必须手动将其添加到视图层次结构中。 :
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
videoView.setMediaController(ctrl);
ctrl.show();
FrameLayout frameLayout = (FrameLayout) ctrl.getParent();
((ViewGroup) frameLayout.getParent()).removeView(frameLayout);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
params.addRule(ALIGN_BOTTOM, videoView.getId());
((RelativeLayout) videoView.getParent()).addView(frameLayout, params);
}
});
问题说明了一切,MediaController 不跟随应用于视图的动画。
我有一个 RelativeLayout,里面有一个 VideoView。 MediaController 锚定到此 VideoView。现在,在 activity 中,我用一些动画(比如从右到左)将相对布局带到屏幕上。布局中的所有内容,如 textview,videoview 都可以完美地进行动画处理,但 MediaController 却没有。它不是与 VideoView 一起从右到左出现,而是出现在屏幕之间,而 VideoView 仍然从右到左出现。
有没有办法强制将动画应用到 MediaController。
最小结构 ->
RelativeLayout
|
|--- TextView
|--- VideoView + MediaController
|--- Some other view
我在相关布局上应用动画。
rtlAnim = AnimationUtils.loadAnimation(activity, R.anim.right_to_left);
relativeLayout.startAnimation(rtlAnim);
right_to_left.xml :
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="500"/>
</set>
任何帮助将不胜感激。
PS :一旦 videoview 准备好,我就会显示媒体控制器。
videoView.setOnPreparedListener(mediaPlayer -> mediaController.show());
使用 here 中的以下代码解决了它。由于 mediaController 将控件放置在浮动 window 中,因此我们必须手动将其添加到视图层次结构中。 :
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
videoView.setMediaController(ctrl);
ctrl.show();
FrameLayout frameLayout = (FrameLayout) ctrl.getParent();
((ViewGroup) frameLayout.getParent()).removeView(frameLayout);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
params.addRule(ALIGN_BOTTOM, videoView.getId());
((RelativeLayout) videoView.getParent()).addView(frameLayout, params);
}
});