diff --git a/android/app/capacitor.build.gradle b/android/app/capacitor.build.gradle index 0421499..8905ffd 100644 --- a/android/app/capacitor.build.gradle +++ b/android/app/capacitor.build.gradle @@ -16,6 +16,7 @@ dependencies { implementation project(':capacitor-text-zoom') implementation project(':capgo-capacitor-social-login') implementation project(':team-lepisode-capacitor-kakao-login') + implementation project(':capacitor-native-settings') } diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 614ae08..4ae718f 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -54,6 +54,10 @@ + + + + diff --git a/android/app/src/main/java/kr/ai/didit/MainActivity.java b/android/app/src/main/java/kr/ai/didit/MainActivity.java index 09b3622..17091ce 100644 --- a/android/app/src/main/java/kr/ai/didit/MainActivity.java +++ b/android/app/src/main/java/kr/ai/didit/MainActivity.java @@ -1,5 +1,14 @@ package kr.ai.didit; +import android.os.Bundle; + import com.getcapacitor.BridgeActivity; -public class MainActivity extends BridgeActivity {} +public class MainActivity extends BridgeActivity { + @Override + public void onCreate(Bundle savedInstanceState) { + // 커스텀 하단 내비게이션 바 플러그인 등록 (super.onCreate 이전에 호출해야 함) + registerPlugin(NavigationBarPlugin.class); + super.onCreate(savedInstanceState); + } +} diff --git a/android/app/src/main/java/kr/ai/didit/NavigationBarPlugin.java b/android/app/src/main/java/kr/ai/didit/NavigationBarPlugin.java new file mode 100644 index 0000000..8817ed0 --- /dev/null +++ b/android/app/src/main/java/kr/ai/didit/NavigationBarPlugin.java @@ -0,0 +1,46 @@ +package kr.ai.didit; + +import android.graphics.Color; +import android.os.Build; +import android.view.View; + +import com.getcapacitor.Plugin; +import com.getcapacitor.PluginCall; +import com.getcapacitor.PluginMethod; +import com.getcapacitor.annotation.CapacitorPlugin; + +// 하단 내비게이션 바 색을 런타임에 현재 화면 배경색으로 칠하기 위한 커스텀 플러그인. +// (@capacitor/status-bar는 상단 상태바만 다뤄서, 하단 내비바는 직접 구현한다) +@CapacitorPlugin(name = "NavigationBar") +public class NavigationBarPlugin extends Plugin { + + // setColor({ color: '#RRGGBB', darkButtons: boolean }) + @PluginMethod + public void setColor(PluginCall call) { + final String color = call.getString("color"); + final boolean darkButtons = Boolean.TRUE.equals(call.getBoolean("darkButtons", true)); + if (color == null) { + call.reject("color is required"); + return; + } + getActivity().runOnUiThread(() -> { + try { + getActivity().getWindow().setNavigationBarColor(Color.parseColor(color)); + // 밝은 배경이면 어두운 버튼(LIGHT_NAVIGATION_BAR) — API 26+ 에서만 지원 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + View decor = getActivity().getWindow().getDecorView(); + int flags = decor.getSystemUiVisibility(); + if (darkButtons) { + flags |= View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR; + } else { + flags &= ~View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR; + } + decor.setSystemUiVisibility(flags); + } + call.resolve(); + } catch (Exception e) { + call.reject("failed to set navigation bar color: " + e.getMessage()); + } + }); + } +} diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index be874e5..32d902a 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -13,10 +13,21 @@ false true @null + + #3DDB99 + #3DDB99 + true + true \ No newline at end of file diff --git a/android/capacitor.settings.gradle b/android/capacitor.settings.gradle index 092f56e..f696ff6 100644 --- a/android/capacitor.settings.gradle +++ b/android/capacitor.settings.gradle @@ -22,3 +22,6 @@ project(':capgo-capacitor-social-login').projectDir = new File('../node_modules/ include ':team-lepisode-capacitor-kakao-login' project(':team-lepisode-capacitor-kakao-login').projectDir = new File('../node_modules/@team-lepisode/capacitor-kakao-login/android') + +include ':capacitor-native-settings' +project(':capacitor-native-settings').projectDir = new File('../node_modules/capacitor-native-settings/android') diff --git a/app/assets/css/main.css b/app/assets/css/main.css index 482f0ec..e7d3d0a 100644 --- a/app/assets/css/main.css +++ b/app/assets/css/main.css @@ -23,7 +23,9 @@ html { font-family: 'Pretendard', system-ui, sans-serif; /* 비정수 DPR(예: 1.75) 기기에서 antialiased(grayscale AA)는 글자를 더 물러 보이게 해 제거 → WebView 기본 AA 사용 */ - text-rendering: optimizeLegibility; + /* optimizeLegibility는 커닝/리가처로 글자를 소수 픽셀 위치에 얹어 작은 글자(pill·태그칩 11~12px)를 무르게 만든다. + optimizeSpeed로 그 경로를 꺼 작은 텍스트를 또렷하게 (DPR 1.75 서브픽셀 뭉개짐 완화) */ + text-rendering: optimizeSpeed; } body { diff --git a/app/components/RetrospectVoiceRecorder.vue b/app/components/RetrospectVoiceRecorder.vue index f24c0a5..74b1629 100644 --- a/app/components/RetrospectVoiceRecorder.vue +++ b/app/components/RetrospectVoiceRecorder.vue @@ -63,7 +63,7 @@