HOME > android > tips

안드로이드 스튜디오에서 Adaptive, 일반 아이콘 만들기

JSFollow20 Jul 2019

안드로이드 스튜디오(Android Studio)에서 아이콘을 쉽게 만들 수 있는 Image Asset Studio를 제공합니다. 이것을 이용하면 Adaptive 아이콘 및 일반 아이콘을 쉽게 만들 수 있습니다. 또한 플레이스토어에 앱을 등록할 때 필요한 512x512 사이즈의 이미지도 생성됩니다.

먼저 Adaptive 아이콘과 일반 아이콘에 대해서 간단히 설명하겠습니다. Adaptive Icon은 foreground와 background 이미지를 앱이 제공하면, 시스템이 이 두개의 이미지를 합쳐서 사용하는 개념입니다. 이미지를 합성하고, 원하는 모양(SQUICLE, CIRCLE, SQUARE 등)으로 자른 후 화면에 보여줍니다. 장점으로는 스마트폰 제조사가 원하는 모양대로 이미지를 변형시킬 수 있다는 점입니다. Adaptive icon의 규격을 지킨다면 사용자도 제조사가 이미지를 자를 때 중요한 부분이 잘리지 않도록 할 수 있어서 서로 좋습니다.

일반 아이콘이란 Legacy Icon이라고 하며, Adaptive Icon이 나오기 이전의 아이콘 형태를 말합니다.

아이콘은 AndroidManifest.xml에서 설정할 수 있습니다.

<application
        android:label="@string/app_name"
        android:icon="@mipmap/ic_launcher"
        android:roundIcon="@mipmap/ic_launcher_round">

android:icon은 Adaptive 아이콘 또는 일반 아이콘을 설정하는 속성입니다. android:roundIcon는 둥근 형태의 아이콘을 설정하는 속성입니다. 만약 어떤 앱이나 시스템이 둥근 형태의 아이콘을 필요로할 때 이 속성에 등록된 이미지를 사용할 수 있습니다. 이 속성은 Adaptive Icon이 나오기 전에 구현된 기능입니다. Adaptive Icon이 나온 시점에 굳이 제공할 필요가 없다고 생각합니다.

Image Asset으로 아이콘 생성

안드로이드 스튜디오의 메뉴에서 [File] -> [New] -> [Image Asset]를 실행합니다.

그럼 아래와 같은 팝업이 뜹니다. Image Asset Icon typeLauncher Icons (Adaptive and Legacy)를 선택하는 것이 좋습니다. Adaptive 아이콘은 안드로이드 O 디바이스부터 지원이 되기 때문에 그 이전 디바이스를 지원하려면 Legacy 아이콘도 만들어 줘야 합니다. Foreground Layer는 Adaptive의 전면 레이어에 대한 설정입니다. Source Asset의 Asset type을 보시면 준비된 이미지, 클립아트 또는 텍스트로 아이콘을 만들 수 있습니다. 저는 텍스트를 선택했는데요. 텍스트의 색상 및 폰트를 변경하는 옵션도 있습니다. 마지막으로 Scaling 옵션을 보면 아이콘의 크기를 조절해줄 수 있습니다.

또한, 설정에 따라 아이콘이 어떻게 보이는지 미리보기 화면이 제공됩니다. Circle, Squircle, Rounded Squire 등의 여러 종류 아이콘이 보이는 이유는, 제조사가 Adaptive Icon을 임의로 자를 때 이런 모양들로 만들 수 있기 때문입니다.

다음으로, Background Layer 탭을 눌르시면 다음과 같은 화면이 보입니다. Image Asset Background Layer는 Adaptive의 배경이 되는 레이어에 대한 설정입니다. 여기도 Foreground와 같이 색상 및 Scaling 등을 조절할 수 있습니다. Foreground와 Background를 모두 설정했다면 Adaptive 아이콘에 대한 설정은 끝났습니다.

Legacy 탭을 누르시면 다음과 같은 화면이 보입니다. Image Asset Legacy, Round Icon, PlayStore 이미지를 만들지 정해줄 수 있습니다. 아이콘의 모양은 Adaptive 아이콘을 따라가기 때문에 더 설정할 것은 없습니다.

Next버튼을 누르면 어떤 파일이 생성되는지, 어떤 경로에 생성되는지 미리보기 화면으로 보여줍니다. Finish버튼을 누르면 파일이 생성됩니다. Image Asset

생성된 아이콘 파일

아이콘은 다음과 같은 경로에 생성됩니다.

├── drawable
│   └── ic_launcher_background.xml
├── drawable-v24
│   └── ic_launcher_foreground.xml
├── mipmap-anydpi-v26
│   ├── ic_launcher_round.xml
│   └── ic_launcher.xml
├── mipmap-hdpi
│   ├── ic_launcher_foreground.png
│   ├── ic_launcher.png
│   └── ic_launcher_round.png
├── mipmap-mdpi
│   ├── ic_launcher_foreground.png
│   ├── ic_launcher.png
│   └── ic_launcher_round.png
├── mipmap-xhdpi
│   ├── ic_launcher_foreground.png
│   ├── ic_launcher.png
│   └── ic_launcher_round.png
├── mipmap-xxhdpi
│   ├── ic_launcher_foreground.png
│   ├── ic_launcher.png
│   └── ic_launcher_round.png
├── mipmap-xxxhdpi
│   ├── ic_launcher_foreground.png
│   ├── ic_launcher.png
│   └── ic_launcher_round.png
└── values

Adaptive 아이콘은 mipmap-anydpi-v26/ic_launcher.xml이며 Vector로 구현되어있기 때문에 해상도별로 이미지 파일을 만들지 않아도 됩니다. 하지만 안드로이드 O(API 26) 이상의 디바이스에만 동작하기 때문에 그 이하 버전을 위해 Legacy 아이콘을 제공해야 합니다.

Legacy 아이콘은 mipmap-해상도 폴더에 있습니다. 해상도 별로 만들어주기 때문에 아이콘들이 많습니다. 또한 round 아이콘을 만들기로 설정했다면 round 아이콘들도 모두 해상도별로 생성됩니다.

Android App bundle을 사용하기로 했다면 앱 번들이 해상도 별로 파일을 나눠주기 때문에 앱 사이즈를 생각할 필요가 없습니다. 하지만 앱 번들을 사용하지 않고, hdpi, mdpi의 저해상도 이미지가 앱 사이즈만 키우고 필요없다고 생각된다면 삭제하셔도 됩니다.

실행 결과

앱을 실행해보면 아래 처럼 보입니다. 안드로이드 Q에서 실행했기 때문에 Adaptive 아이콘이 보이고, 구글 런처는 Circle 형태로 아이콘을 자르기 때문에 이런 모양으로 보입니다. icon in launcher

참고