Вы можете просто получить list_selector_background
нарисованное, как объяснил Джинеш, а затем найти его средний цвет , как показано в в этом ответе (I ' сделать это в коде инициализации, чтобы вам не приходилось тратить время на их обработку каждый раз, но, эй, это преждевременная оптимизация). Это должно быть достаточно согласовано с темой, чтобы ваши виджеты соответствовали нужным параметрам.
Ваш код может выглядеть так:
public static Color getPlatformSelectionColor(Context c) {
Bitmap bitmap = BitmapFactory.decodeResource(c.getResources(),
android.R.drawable.list_selector_background);
long redBucket = 0;
long greenBucket = 0;
long blueBucket = 0;
long pixelCount = 0;
for (int y = 0; y < bitmap.getHeight(); y++)
{
for (int x = 0; x < bitmap.getWidth(); x++)
{
Color c = bitmap.getPixel(x, y);
pixelCount++;
redBucket += Color.red(c);
greenBucket += Color.green(c);
blueBucket += Color.blue(c);
// does alpha matter?
}
}
Color averageColor = Color.rgb(redBucket / pixelCount,
greenBucket / pixelCount,
blueBucket / pixelCount);
return averageColor;
}