UserIcons.java revision 64d4dca63f65e4c7d4a829c85ff6670bdd34e2eb
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 } 5164d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina Bitmap bitmap = Bitmap.createBitmap(icon.getIntrinsicWidth(), icon.getIntrinsicHeight(), 5264d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina Bitmap.Config.ARGB_8888); 5364d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina icon.draw(new Canvas(bitmap)); 5464d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina return bitmap; 5564d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina } 5664d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina 5764d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina /** 5864d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * Returns a default user icon for the given user. 5964d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * 6064d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * Note that for guest users, you should pass in {@code UserHandle.USER_NULL}. 6164d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * @param userId the user id or {@code UserHandle.USER_NULL} for a non-user specific icon 6264d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina * @param light whether we want a light icon (suitable for a dark background) 6364d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina */ 6464d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina public static Drawable getDefaultUserIcon(int userId, boolean light) { 6564d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina int colorResId = light ? R.color.user_icon_default_white : R.color.user_icon_default_gray; 6664d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina if (userId != UserHandle.USER_NULL) { 6764d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina // Return colored icon instead 6864d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina colorResId = USER_ICON_COLORS[userId % USER_ICON_COLORS.length]; 6964d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina } 7064d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina Drawable icon = Resources.getSystem().getDrawable(R.drawable.ic_account_circle).mutate(); 7164d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina icon.setColorFilter(Resources.getSystem().getColor(colorResId), Mode.SRC_IN); 7264d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight()); 7364d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina return icon; 7464d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina } 7564d4dca63f65e4c7d4a829c85ff6670bdd34e2ebAlexandra Gherghina} 76