Как установить значок приложения для настольного приложения libGDX? - программирование
Подтвердить что ты не робот

Как установить значок приложения для настольного приложения libGDX?

Я пытаюсь настроить значок приложения из класса -desktop, используя:

package org.osgameseed.games.animalflip;

import com.badlogic.gdx.Files;
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;

public class Main {
    public static void main(String[] args) {
        LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
        cfg.title = "AnimalFlip";
        cfg.useGL20 = false;
        cfg.width = 800;
        cfg.height = 600;
        cfg.addIcon("data/ic_launcher.png", Files.FileType.Internal);

        new LwjglApplication(new AnimalFlipGame(), cfg);
    }
}

Значок не установлен (по крайней мере, на Linux), любая идея о том, как его установить?

4b9b3361

Ответ 1

Взгляните на api (addIcon (...)):

Добавляет значок окна. Иконы опробованы в добавленном порядке, первый это работает. Обычно необходимо предоставить три значка: 128x128 (для Mac), 32x32 (для Windows и Linux) и 16x16 (для Windows).

Возможно, ваш значок имеет неправильные размеры, поэтому он не будет установлен. Иначе это должно сработать!

Просто упомянем, что вы просто установили маленький значок в левом верхнем краю (если приложение запущено), а не значок, который вы увидите на рабочем столе!
the small icon

Ответ 2

который принес Icon в мою Mac-Dock!;) Обязательно позвоните в Lwjgl-Thread

/**
 * workaround for Mac
 */
private static void setApplicationIcon() {
    try {
        Class<?> cls = Class.forName("com.apple.eawt.Application");
        Object application = cls.newInstance().getClass().getMethod("getApplication").invoke(null);

        FileHandle icon = Gdx.files.local("icons/icon.png");
        application.getClass().getMethod("setDockIconImage", java.awt.Image.class)
                .invoke(application, new ImageIcon(icon.file().getAbsolutePath()).getImage());
    } catch (Exception e) {
        // nobody cares!
    }
}