Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

안드로이드 버튼에 그림자(Shadow) 효과 만드는 방법 완벽 가이드

개요

이 글에서는 안드로이드 앱에서 버튼에 그림자(shadow) 효과를 적용하는 방법을 단계별로 알아봅니다. XML 레이어 리스트(layer-list) 드로어블을 활용하면 별도의 라이브러리 없이도 자연스러운 입체감 있는 버튼을 손쉽게 구현할 수 있습니다.

Step 1 — 새 프로젝트 생성

Android Studio를 실행한 뒤, 상단 메뉴에서 File ⇒ New Project를 선택하고 새 프로젝트 생성에 필요한 정보를 모두 입력하여 프로젝트를 만듭니다.

Step 2 — 레이아웃 파일 작성 (res/layout/activity_main.xml)

아래 코드를 activity_main.xml 파일에 추가합니다. 버튼의 배경으로 이후 작성할 그림자 드로어블(shadow_button_layer_list)을 지정하는 것이 핵심입니다.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:width="200dp"
        android:layout_gravity="center"
        android:text="Shadow Button"
        android:background="@drawable/shadow_button_layer_list"/>
</androidx.constraintlayout.widget.ConstraintLayout>

Step 3 — 메인 액티비티 작성 (src/MainActivity.java)

메인 액티비티에는 기본 코드만 있으면 충분합니다. 아래 코드를 MainActivity.java에 추가합니다.

package com.medkart.sample;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

Step 4 — 그림자 드로어블 작성 (res/drawable/shadow_button_layer_list.xml)

그림자 효과의 핵심은 바로 이 파일입니다. layer-list를 사용해 두 개의 레이어를 겹치는 방식으로 그림자를 표현합니다.

- 첫 번째 아이템: 회색(darker_gray) 도형을 오른쪽·아래 방향으로 살짝 배치하여 그림자 역할을 합니다.
- 두 번째 아이템: 흰색 도형을 위로 배치하여 버튼의 전경(foreground) 역할을 합니다.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="https://schemas.android.com/apk/res/android">
    <!-- 회색 그림자 레이어 -->
    <item android:left="3dp" android:top="5dp">
        <shape>
            <solid android:color="@android:color/darker_gray" />
            <corners android:radius="15dp" />
        </shape>
    </item>
    <!-- 흰색 전경 레이어 -->
    <item android:bottom="5dp" android:right="3dp">
        <shape>
            <solid android:color="@android:color/white" />
            <corners android:radius="15dp" />
        </shape>
    </item>
</layer-list>

각 레이어의 오프셋 값(3dp, 5dp)과 코너 반지름(15dp)은 원하는 디자인에 맞게 조절하면 됩니다. 값을 키우면 그림자가 더 깊고 둥근 느낌을 줄 수 있습니다.

Step 5 — 매니페스트 확인 (Manifests/AndroidManifest.xml)

AndroidManifest.xml 파일이 아래와 같이 구성되어 있는지 확인합니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.medkart.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

앱 실행 및 결과 확인

이제 앱을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 후, 툴바의 안드로이드 버튼에 그림자(Shadow) 효과 만드는 방법 완벽 가이드 Run 아이콘을 클릭합니다. 목록에서 본인의 모바일 기기를 선택하면 기기 화면에 다음과 같이 그림자 효과가 적용된 버튼이 표시됩니다.

안드로이드 버튼에 그림자(Shadow) 효과 만드는 방법 완벽 가이드

마무리

이처럼 layer-list 드로어블만 활용하면 안드로이드 버튼에 간단하면서도 세련된 그림자 효과를 추가할 수 있습니다. 색상, 오프셋, 코너 반지름 등을 응용해 앱의 디자인 분위기에 맞는 다양한 스타일을 만들어 보세요.