전체 글

- 기존의 RemoteViews XML 기반 위젯에서는 PendingIntent를 통해 Activity를 열었다. - 하지만 Glance에서는 actionStartActivity() 함수를 사용한다.fun actionStartActivity( intent: Intent, parameters: ActionParameters = actionParametersOf(),): Action = StartActivityIntentAction(intent, parameters, null)- Glance 위젯에서 특정 Activity를 시작하기 위한 Action 객체를 생성하는 함수다. - 즉, Glance의 Modifier.clickable 안에서 사용할 수 있는 동작(Action)을 만들어서 연결해 준다..
- Glance에서는 일반 Compose와는 다르게 Glance 전용 패키지로 UI 구성 요소를 제공한다.import androidx.glance.GlanceIdimport androidx.glance.GlanceModifierimport androidx.glance.Imageimport androidx.glance.ImageProviderimport androidx.glance.LocalContextimport androidx.glance.action.Actionimport androidx.glance.action.clickableimport androidx.glance.appwidget.GlanceAppWidgetimport androidx.glance.appwidget.GlanceAppWidgetM..
- 자사 서비스에서 신규 위젯을 추가하기로 했는데, 기존의 RemoteViews 방식이 아닌 Compose Glance 기반으로 위젯 구현을 진행해 봤다. - RemoteViews의 경우에는 XML 레이아웃을 조작해서 화면에 표시하는 방식이다. 클릭 이벤트는 PendingIntent로 처리 - Glance의 경우에는 Compose 기반인데, 백그라운드에서는 RemoteViews 기반이지만 개발자가 직접 코드로 다룰 필요가 없음. 가독성도 좋고 onClick 처리도 GlanceModifier를 통해 간단하지만 역시 위젯 특유의 제한 사항은 존재한다. - 먼저 아래 설정을 Gradle에 추가해 준다.implementation("androidx.glance:glance:1.1.1")implementation(..
- Future : 비동기(async) 작업을 표현하는 Dart의 핵심 타입 - Future 객체를 통해 실행되는 로직이 나중에 처리되는 것을 확인 가능한 코드// Future - 비동기 작업의 결과 또는 완료 상태를 나타내는 객체void main() { playPcGame();}void playPcGame() { startBoot(); startInternet(); startGame();}void startBoot() { print("boot completed");}void startInternet() { Future.delayed(Duration(seconds: 3), () { print("internet completed"); }); print('delay step');}void..
- List, Map 선언List numbers = [];List numbers2 = [1, 2, 3, 4, 5];Map scoreMap = {};Map scoreMap2 = {'key': 100, 'any': 200, 'lee': 300}; - 반복문void main() { numbers.add(6); for (int i = 0; i - 함수 및 클래스 선언int add(int a, int b) { return a + b;}class UserInfo { String name; int age; UserInfo(this.name, this.age); void abc() { }} - 클래스 상속class Man extends UserInfo { Man(String name, ..
- 이번엔 Room DB DAO를 통해 데이터의 저장 및 수정이 문제없이 작동하는지 테스트하는 코드를 작성해 본다.@RunWith(AndroidJUnit4::class)class MovieDaoTest { @get:Rule var instantTaskExecutorRule = InstantTaskExecutorRule() private lateinit var dao: MovieDao private lateinit var database: TMDBDatabase- DAO Test 클래스를 하나 만들어서 동기적 테스트를 위해 InstantTaskExecutorRule()을 선언해 주고, DAO와 DB 초기화를 준비한다. - 아래와 같은 DAO를 테스트해 보기로 했다.@Daointerfa..
https://yongdragon9819.tistory.com/entry/Android-Test-Before%EC%99%80-Test%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%ED%81%B4%EB%9E%98%EC%8A%A4-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A7%84%ED%96%89#google_vignette [Android Test] @Before와 @Test를 이용한 클래스 테스트 진행- 안드로이드 테스트 코드 작성에 대한 각종 내용을 기록하는 말머리 [Android Test] - 아래와 같이 원주율을 활용한 계산 Class가 있다.class MyCalc : Calculations { private val pi = 3.14 override fun c..
- 지정된 Ratio 조건을 가지는 둥근 테두리 모양의 이미지 렌더링 컴포넌트를 작업했다. - Ratio는 가로 세로 비율인데, 디자인 가이드에 1:2, 16:9 형식처럼 디자이너분이 지정을 해주셨고, 그에 따라 Enum Class로 정리했다.enum class CustomRatio(val width: Int, val height: Int, ...) { RATIO_1_1(1, 1, ...), RATIO_4_5(4, 5, ...), ... - 그리고 Float 타입으로 Ratio 값을 구하는 공식 함수도 선언해 준다.val value: Float get() = width.toFloat() / height - 둥근 테두리 구성을 위해 Modifier의 border를 사용했다. width..
- 온라인 스터디 시에 구글 미트를 활용했는데, 알고 보니 모바일로 회의 시에만 무료이고, PC 버전에서는 유료인 것으로 확인된다. - PC 버전에서도 제한 없이 사용하려면 Whale을 설치해서 진행하면 된다.- 먼저, 앱 마켓이나 웨일 공식 사이트에서 브라우저 또는 앱을 다운로드한다.https://whale.naver.com/ko/ 네이버 웨일 브라우저일상을 여는 새로운 시작 네이버 웨일whale.naver.com - 모바일의 경우에는 아래 과정으로 회의를 참여하거나 주최할 수 있다. - 회의를 시작하면 아래와 같이 화상 화면으로 연결되고, 바로 정보 공유가 가능하다.- 위 정보 공유를 통해 참여자는 아래 화면에서 공유받은 정보를 기입하면 된다. - 브라우저는 더 간단- 웨일 브라우저를 열고 우측 상단..
- 안드로이드 테스트 코드 작성에 대한 각종 내용을 기록하는 말머리 [Android Test] - 아래와 같이 원주율을 활용한 계산 Class가 있다.class MyCalc : Calculations { private val pi = 3.14 override fun calculateCircumference(redius: Double): Double { return 2 * pi * redius } override fun calculateArea(redius: Double): Double { return pi * redius * redius }} - JUnit4 기반 test 코드를 작성해 본다. - 먼저 클래스명에서 오른쪽 마우스 - 생성 - 테스트를 통..
SeungYong.Lee
Win-Dev