MediaController不尊重视图的动画

问题描述 投票:1回答:1

问题已经说明了一切,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());
android android-animation android-videoview mediacontroller
1个回答
0
投票

使用下面的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);
                }
            });
© www.soinside.com 2019 - 2024. All rights reserved.