164d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina/* 264d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * Copyright (C) 2014 The Android Open Source Project 364d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * 464d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * Licensed under the Apache License, Version 2.0 (the "License"); 564d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * you may not use this file except in compliance with the License. 664d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * You may obtain a copy of the License at 764d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * 864d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * http://www.apache.org/licenses/LICENSE-2.0 964d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * 1064d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * Unless required by applicable law or agreed to in writing, software 1164d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * distributed under the License is distributed on an "AS IS" BASIS, 1264d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1364d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * See the License for the specific language governing permissions and 1464d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * limitations under the License. 1564d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina */ 1664d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina 1764d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghinapackage com.android.internal.util; 1864d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina 1964d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghinaimport android.content.res.Resources; 2064d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghinaimport android.graphics.Bitmap; 2164d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghinaimport android.graphics.Canvas; 2264d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghinaimport android.graphics.PorterDuff.Mode; 2364d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghinaimport android.graphics.drawable.Drawable; 2464d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghinaimport android.os.UserHandle; 2564d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina 2664d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghinaimport com.android.internal.R; 2764d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina 2864d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina/** 2964d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * Helper class that generates default user icons. 3064d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina */ 3164d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghinapublic class UserIcons { 3264d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina 3364d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina private static final int[] USER_ICON_COLORS = { 3464d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina R.color.user_icon_1, 3564d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina R.color.user_icon_2, 3664d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina R.color.user_icon_3, 3764d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina R.color.user_icon_4, 3864d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina R.color.user_icon_5, 3964d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina R.color.user_icon_6, 4064d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina R.color.user_icon_7, 4164d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina R.color.user_icon_8 4264d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina }; 4364d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina 4464d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina /** 4564d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * Converts a given drawable to a bitmap. 4664d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina */ 4764d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina public static Bitmap convertToBitmap(Drawable icon) { 4864d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina if (icon == null) { 4964d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina return null; 5064d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina } 5180d119bf6536293c3e6e4699a287a7bedfcf5586Alexandra Gherghina final int width = icon.getIntrinsicWidth(); 5280d119bf6536293c3e6e4699a287a7bedfcf5586Alexandra Gherghina final int height = icon.getIntrinsicHeight(); 5380d119bf6536293c3e6e4699a287a7bedfcf5586Alexandra Gherghina Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 5480d119bf6536293c3e6e4699a287a7bedfcf5586Alexandra Gherghina Canvas canvas = new Canvas(bitmap); 5580d119bf6536293c3e6e4699a287a7bedfcf5586Alexandra Gherghina icon.setBounds(0, 0, width, height); 5680d119bf6536293c3e6e4699a287a7bedfcf5586Alexandra Gherghina icon.draw(canvas); 5764d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina return bitmap; 5864d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina } 5964d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina 6064d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina /** 6164d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * Returns a default user icon for the given user. 6264d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * 6364d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * Note that for guest users, you should pass in {@code UserHandle.USER_NULL}. 64213955e5622dd444ce2ada0f6de7dd92cc044dcbTony Mak * 65213955e5622dd444ce2ada0f6de7dd92cc044dcbTony Mak * @param resources resources object to fetch user icon / color. 6664d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * @param userId the user id or {@code UserHandle.USER_NULL} for a non-user specific icon 6764d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * @param light whether we want a light icon (suitable for a dark background) 6864d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina */ 69213955e5622dd444ce2ada0f6de7dd92cc044dcbTony Mak public static Drawable getDefaultUserIcon(Resources resources, int userId, boolean light) { 7064d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina int colorResId = light ? R.color.user_icon_default_white : R.color.user_icon_default_gray; 7164d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina if (userId != UserHandle.USER_NULL) { 7264d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina // Return colored icon instead 7364d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina colorResId = USER_ICON_COLORS[userId % USER_ICON_COLORS.length]; 7464d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina } 75213955e5622dd444ce2ada0f6de7dd92cc044dcbTony Mak Drawable icon = resources.getDrawable(R.drawable.ic_account_circle, null).mutate(); 76213955e5622dd444ce2ada0f6de7dd92cc044dcbTony Mak icon.setColorFilter(resources.getColor(colorResId, null), Mode.SRC_IN); 7764d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight()); 7864d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina return icon; 7964d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina } 8064d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina} 81