问题已经说明了一切,MediaController不遵循应用于视图的动画。
我有一个RelativeLayout,其中有一个VideoView。 MediaController固定在此VideoView上。现在,在活动中,我在屏幕上显示一些动画(从右到左)的相对布局。布局中的所有内容(例如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.setOnPreparedListener(mediaPlayer -> mediaController.show());
使用下面的here代码解决了。由于mediaController将控件放置在浮动窗口中,因此我们必须手动将其添加到视图层次结构中。 :
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);
}
});