したがって、私のアプリでは MediaPlayer は次のように拡張することで SurfaceView に基づいています。
public class VideoView extends SurfaceView {}
現在、内部でMediaPlayerを使用しており、達成したいのは、画面の開始色を黒ではなく白にすることです。VideoView は、単独で白背景レイアウトに配置されます。それは白ですが、ビデオの再生を開始すると、VideoView が一瞬黒くなります。ビデオ自体の背景は白で、最初のフレームは黒ではないため、MediaPlayer に関するものだと思います。再生を開始すると、デフォルトで画面が黒くなります。次のようなトランジションを使用できると推測していました。
TransitionDrawable transition = new TransitionDrawable(new Drawable[]{new ColorDrawable(Color.WHITE), new ColorDrawable(Color.TRANSPARENT)});
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN)
this.setBackgroundDrawable(transition);
else
this.setBackground(transition);
transition.setCrossFadeEnabled(true);
transition.startTransition(1000);
ただし、これはあまり役に立ちません。私の目標を達成する方法はありますか?
ローカル ビデオ ファイル (SD カードから) が再生されていることを忘れていました。したがって、黒い画面は、長い HTTP セッションの確立やその他のストリーム関連のものではありません。そして、準備は次の方法で行われますprepareAsync();