有沒有辦法自定義MediaController?我需要改變按鈕的樣式,SeekBar等更改android MediaController的樣式
8
A
回答
3
方法makeControllerView
被意圖覆蓋,所以你可以提供自己的看法。不幸的是,它現在是隱藏的。
您可能想要獲取MediaController的源代碼並重新實現它,或者將隱藏方法複製並粘貼到子類中,以便自定義它。
4
你可以做的是遞歸你的MediaController的視圖層次和編程設置搜索欄的繪製:
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);
1
我改變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)
在VideoView
的OnPreparedListener
,使其工作。否則,MediaController視圖沒有子項。
+0
什麼是'setCompatTint'? – 2017-07-14 17:09:23
相關問題
- 1. 更改android mediacontroller中文本的顏色
- 2. 以編程方式更改MediaController圖標
- 3. android動態更改樣式
- 4. Android:更改edittext樣式
- 5. 如何更改Android中的樣式
- 6. 如何更改android的按鈕樣式
- 7. Android MapBox更改MyLocation標記的樣式
- 8. 更改樣式
- 9. Android Upnp MediaController
- 10. Android秀MediaController
- 11. 更改樣式Google地圖的樣式
- 12. 更改android操作欄樣式
- 13. 使用主題更改Android樣式
- 14. Android Honeycomb - 更改操作欄樣式
- 15. 點擊Android按鈕更改樣式
- 16. 如何更改Android複選框樣式
- 17. 在android中更改微調器樣式
- 18. Android如何更改edittext光標樣式
- 19. Android SimpleAdapter更改元素樣式
- 20. 在Android中更改對話框樣式
- 21. 更改狀態更改的樣式
- 22. 更改CSS樣式
- 23. 更改TimePicker樣式
- 24. OnClick樣式更改
- 25. 更改RadWindow樣式
- 26. 更改類中的樣式
- 27. 更改UITableViewController的樣式
- 28. mxCell的更改樣式
- 29. 更改AlertDialog的樣式
- 30. 更改jqGrid的樣式
以下是一個MediaController自定義示例:http://stackoverflow.com/questions/12482203/how-to-create-custom-ui-for-android-mediacontroller/14323144#14323144 – Blago 2013-01-14 17:15:41