일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- scroll
- data
- binding
- textview
- android
- LifeCycle
- 안드로이드
- Navigation
- Button
- Coroutines
- drift
- activity
- intent
- tabbar
- 테스트
- DART
- ScrollView
- 계측
- appbar
- 앱
- Flutter
- 앱바
- TEST
- Compose
- viewmodel
- CustomScrollView
- textfield
- Kotlin
- Dialog
- livedata
- Today
- Total
목록전체 글 (364)
Study Record

😶 개요 android 기기종류에는 화면 크기가 다양하고 화면 픽셀 크기도 다양하다. 같은 크기더라도 제곱인치당 160 픽셀인 기기도 있고 480 픽셀인 기기도 있다. 따라서, 픽셀 밀도에 따른 편차를 고려하지 않으면 이미지가 잘못된 방식으로 표현될 수 있다. 😶 밀도에 따른 대처법 안드로이드에서는 밀도에 따른 화면에서 UI 표시 크기를 유지하기 위해 dp (밀도 독립형 필셀) 단위를 사용한다. 중밀도 화면(160dpi) 에서 1dp 는 1px 과 거의 비슷한 가상 픽셀 단위이다. android 는 각각 다른 밀도 화면에서 적절한 실제 픽셀 수로 변환한다. 다음 공식은 dp 를 px 로 바꾸는 변환 공식이다. (각 기기의 밀도 정도(dpi) 에 따라 px 가 달라진다.) px = dp * (dpi / 1..
😎 앱 리소스 앱을 만들 때 이미지나 아이콘, 파일 등 여러 가지 정적 콘텐츠를 리소스라고 부른다. ex) 비트맵, 레이아웃 정의, 문자열 리소스(문자열, 이미지 등)는 직접 코드에 정의하기 보다 유지 관리하기 쉬운 리소스 디렉터리를 사용할 수 있다. 이렇게 외부화한 리소스는 R 클래스에서 생성되는 리소스 ID 로 액세스 할 수 있다. 예를 들어, xml 파일에 리소스(문자열)를 외부화하지 않고 사용하는 예시이다. "사랑해" 문자열을 외부화하여 xml 파일에 사용하면 @string/[정의한 리소스 ID] 로 외부에서 정의한 문자열을 가져올 수 있다. 앱에서 사용하는 문자열을 파일로 관리하는 디렉토리 하나를 신경 쓰는 것과 변경된 사항이 있을 때마다 xml 파일을 뒤져가며 수정하는 것을 생각하면 외부화하여..
🎁 Debug 혹은 Release 판단 간단하게 kReleaseMode 혹은 kDebugMode 로 판단할 수 있다. import 'package:flutter/foundation.dart'; if (kReleaseMode) { // 릴리즈 모드 } if (kDebugMode) { // 디버그 모드 }
HTML 삽입 미리보기할 수 없는 소스

🎁 WillPopScope Widget 안드로이드에서 뒤로 가기 버튼을 누르거나 system back button 이 실행되면 현재 화면이 종료되거나(Route Stack Pop) 앱이 종료된다. 이러한 액션이 실행되기 전에 콜백 이벤트를 받아 액션을 실행할지 말지 정할 수 있게 해주는 위젯이 WillPopScope 이다. onWillPop 인자로 콜백 이벤트 인자를 받아 리턴값이 true 이면 액션을 그대로 실행하고 false 이면 액션을 실행하지 않는다. WillPopScope( onWillPop: () async { return true; }, child: Scaffold( body: Center(child: Text("back press test")), ), ); 😶 간단한 예시) 뒤로 가기 버튼..

🎁 SafeArea Widget 안드로이드와 아이폰에 있는 상태바나 홈버튼 부분(아이폰만 존재)을 없앨 수 있는 위젯이다. argments top: [ true / false ] : 상태바 부분을 포함하지 않는다. bottom [ true / false ] : 홈버튼 부분을 포함하지 않는다. 예시 ) void main() { runApp( MaterialApp( home: HomeScreen(); ) ); } class HomeScreen extends StatelessWidget { const HomeScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( backgroundCo..

🎁 flutter_launcher_icons 플러터 프로젝트에서 앱 로고를 설정하려면 안드로이드와 IOS 플랫폼마다 각각 따로 설정해야 한다. 각 플랫폼마다 방법을 안다면 상관없겠지만 간단하게 flutter_launcher_icons 라이브러리를 사용할 수도 있다. 😶 설치 pubspec.yaml 파일에 라이브러리를 추가해 준 뒤 pub get 버튼을 눌러 프로젝트에 적용해 준다. (작성일 기준 최신버전 v 0.13.1) dev_dependencies: flutter_launcher_icons: ^0.13.1 dev_dependencies 에 추가하기 때문에 실제로 앱을 출시했을 때 포함되지는 않는다. 개발 과정 중에만 사용한다. 😶 로고 적용 마찬가지로 pubspec.yaml 파일에 android 와 ..