Reference Android Sender w/ Framework API: CastVideos-android application shows how to cast videos from an Android device that is fully compliant with the Cast Design Checklist.
Apache License 2.0
345
stars
183
forks
source link
Styles won't change Title text and Button highlight animator colour in Introductory Overlay #102
The only way I managed to solve this issue was to add a manual work-around like this:
val overlay = IntroductoryOverlay.Builder(this@CastActivity, it)
.setTitleText("title text")
.setOverlayColor(R.color.XX)
.setSingleTime()
.build()
overlay.show()
// A hack to change colors. Note that the color of button itself is changed in the Styles
(overlay as? ViewGroup)?.apply {
// Title text color
findViewById<TextView>(R.id.cast_featurehighlight_help_text_header_view)?.setTextColor(R.color.XX)
// The highlight color surrounding the button
findViewById<View>(R.id.cast_featurehighlight_view).apply {
try {
val classFields = this::class.java.declaredFields
for (classField in classFields) {
// Getting class member that is InnerZoneDrawable
if (classField.type.toString().contains("InnerZoneDrawable", true)) {
classField.isAccessible = true
// Get an object of this class member, convert it to Drawable, and apply color filter
val innerZoneDrawable = classField.get(this)
(innerZoneDrawable as Drawable).apply {
colorFilter = PorterDuffColorFilter(R.color.XX, PorterDuff.Mode.SRC_IN)
}
// Now for the circle animator, we need to access Paint variables inside InnerZoneDrawable and apply color filter
val innerZoneClassFields = innerZoneDrawable.javaClass.declaredFields
for (innerZoneClassField in innerZoneClassFields) {
if (innerZoneClassField.type == Paint::class.java) {
innerZoneClassField.isAccessible = true
(innerZoneClassField.get(innerZoneDrawable) as Paint).apply {
colorFilter = PorterDuffColorFilter(R.color.XX, PorterDuff.Mode.SRC_IN)
}
}
}
}
}
} catch (e: Exception) {
Timber.w(e)
}
}
}
According to the documentation, Cast Introductory overlay is customisable via Styles.
However, no matter what colour you put in the styles, the TitleText and Cast Button overlay colour (the one surrounding the button) does not change.
This is reproducible in the sample code also.
The only way I managed to solve this issue was to add a manual work-around like this: