Android MediaControllerのスタイルを変更します
-
20-09-2019 - |
質問
MediaControllerをカスタマイズする方法はありますか?ボタンのスタイル、SeekBarなどを変更する必要があります。
解決
メソッド makeControllerView
独自の見解を提供できるように、オーバーライドすることを意図していました。残念ながら、現時点では隠されています。
MediaControllerのソースを取得し、それを再実装するか、隠されたメソッドをサブクラスにコピーしてパストして、カスタマイズできる場合があります。
他のヒント
あなたができることは、あなたのメディアコントローラーのビューの階層を再開し、SeekBarの描画可能なプログラムで設定することです。
private void styleMediaController(View view) {
if (view instanceof MediaController) {
MediaController v = (MediaController) view;
for(int i = 0; i < v.getChildCount(); i++) {
styleMediaController(v.getChildAt(i));
}
} else
if (view instanceof LinearLayout) {
LinearLayout ll = (LinearLayout) view;
for(int i = 0; i < ll.getChildCount(); i++) {
styleMediaController(ll.getChildAt(i));
}
} else if (view instanceof SeekBar) {
((SeekBar) view).setProgressDrawable(getResources().getDrawable(R.drawable.progressbar));
((SeekBar) view).setThumb(getResources().getDrawable(R.drawable.progresshandle));
}
}
次に、電話してください
styleMediaController(myMC);
BK138の回答のコードを変更しました 色を変更するだけです 要素の。引き分け自体ではありません。このソリューションは、サポートライブラリV4と組み合わせて古いデバイスと互換性があります。
private void styleMediaController(View view) {
if (view instanceof MediaController) {
MediaController v = (MediaController) view;
for (int i = 0; i < v.getChildCount(); i++) {
styleMediaController(v.getChildAt(i));
}
} else if (view instanceof LinearLayout) {
LinearLayout ll = (LinearLayout) view;
for (int i = 0; i < ll.getChildCount(); i++) {
styleMediaController(ll.getChildAt(i));
}
} else if (view instanceof SeekBar) {
((SeekBar) view)
.getProgressDrawable()
.mutate()
.setColorFilter(
getResources().getColor(
R.color.MediaPlayerMeterColor),
PorterDuff.Mode.SRC_IN);
Drawable thumb = ((SeekBar) view).getThumb().mutate();
if (thumb instanceof android.support.v4.graphics.drawable.DrawableWrapper) {
//compat mode, requires support library v4
((android.support.v4.graphics.drawable.DrawableWrapper) thumb).setCompatTint(getResources()
.getColor(R.color.MediaPlayerThumbColor));
} else {
//lollipop devices
thumb.setColorFilter(
getResources().getColor(R.color.MediaPlayerThumbColor),
PorterDuff.Mode.SRC_IN);
}
}
}
次に、電話してください
styleMediaController(myMC);
電話しなければなりませんでした styleMediaController(myMC)
の中に OnPreparedListener
の VideoView
それを機能させるために。それ以外の場合、Mediacontrollerビューには子供がいません。
所属していません StackOverflow