MediaControllerをカスタマイズする方法はありますか?ボタンやSeekBarなどのスタイルを変更する必要があります。
12199 次
3 に答える
8
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);
于 2012-10-03T23:28:22.957 に答える
3
このメソッドmakeControllerView
は、独自のビューを提供できるようにオーバーライドすることを目的としていました。残念ながら、現時点では非表示になっています。
MediaControllerのソースを取得して再実装するか、非表示のメソッドをコピーしてサブクラスに貼り付けて、カスタマイズできるようにすることができます。
于 2010-01-11T20:00:48.723 に答える
3
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ビューには子がありません。
于 2016-03-23T08:37:30.290 に答える