Страницы

Поиск по вопросам

четверг, 4 октября 2018 г.

Андроид. Java. Как программно изменить иконку приложения и его название?

Заметил, что у стандартного календаря андроид реализована следующая функция: каждый день, в зависимости от числа месяца меняется иконка. Т.е., если сегодня 1 число, то на иконке будет изображена цифра 1, если 31-ое, то цифра 31 соответственно.
Вопрос: как такое реализовать самому? Вопрос 2: можно ли сделать возможным программное изменения названия приложения? Если да, то как реализовать?


Ответ

Добавляем разрешения

Добавляем два метода:
private void shortcutAdd(String name, int number) { // Intent to be send, when shortcut is pressed by user ("launched") Intent shortcutIntent = new Intent(getApplicationContext(), Play.class); shortcutIntent.setAction(Constants.ACTION_PLAY);
// Create bitmap with number in it -> very default. You probably want to give it a more stylish look Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); Paint paint = new Paint(); paint.setColor(0xFF808080); // gray paint.setTextAlign(Paint.Align.CENTER); paint.setTextSize(50); new Canvas(bitmap).drawText(""+number, 50, 50, paint); ((ImageView) findViewById(R.id.icon)).setImageBitmap(bitmap);
// Decorate the shortcut Intent addIntent = new Intent(); addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name); addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bitmap);
// Inform launcher to create shortcut addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); getApplicationContext().sendBroadcast(addIntent); }

private void shortcutDel(String name) { // Intent to be send, when shortcut is pressed by user ("launched") Intent shortcutIntent = new Intent(getApplicationContext(), Play.class); shortcutIntent.setAction(Constants.ACTION_PLAY);
// Decorate the shortcut Intent delIntent = new Intent(); delIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); delIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);
// Inform launcher to remove shortcut delIntent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT"); getApplicationContext().sendBroadcast(delIntent); }
В конце вешаем слушателей
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.test); findViewById(R.id.add).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { shortcutAdd("changeIt!", count); } }); findViewById(R.id.increment).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { shortcutDel("changeIt!"); count++; shortcutAdd("changeIt!", count); } }); }
Оригинал ответа тут

Комментариев нет:

Отправить комментарий