Android 99

Groovy DSL 을 Kotlin DSL 로 바꿔보기

이것도 Dev6 팀에서 안드로이드분이 알려주신거다.. 아직 이 분이 알려주신거에 대한 포스팅이 하나 더 있다 ㅎㅎㅎ 혼자서 생존하던 안드개발자에게 새로운 방안을 제시해주셔서 감사하게 생각하고 있다. 먼저 나는 프로젝트를 생성했을때 나오는 build.gradle 이 Groovy 방식으로 되어있다는 사실 조차도 몰랐다. 이걸 찾아보면서 알게 됐는데 Kotlin DSL 로 왜 바꿔야하는가 부터 설명하자면 컴파일 타임에 에러 확인 코드 탐색 자동 완성 구문 강조 IDE의 지원으로 향상된 편집환경 소스코드와 동일한 언어의 사용 의 장점이 있다고 한다. 하지만 장점만 있는건 이 세상에 없지. 단점도 존재한다. https://developer.android.com/studio/build/migrate-to-kts?h..

Android 2022.02.09

Android buildSrc 로 Dependency 관리하기

최근 개설한 개발팀 Dev6 에서 같이 안드로이드 개발을 하는 팀원분께서 2인이상이 개발하고 또 프로젝트의 단위가 커질 것 같으니 이런 방법들로 프로젝트를 관리하면 어떻겠냐고 말씀해주신게 여럿 있었다. 그 중 buildSrc 로 Dependency 를 관리하는 방법에 대해 먼저 정리 해볼까한다. 찾아보니까 다른 깃허브에서 이렇게 관리하는걸 본적이 있는데 이게 도대체 뭘까? 라고 생각하고 뭐라고 찾아야할지도 모르겠어서 그냥 넘어갔던 기억이 있는데 이번 기회에 한번 적용해볼까 한다. buildSrc 는 사실 의존성 관리를 좀 더 편하게 하고 가독성을 올리기 위해 사용하는것뿐 그게 다다. 하지만? 개발자에겐 그건 아주 중요하고 프로젝트에 참여하는 인원이 많을수록 그 중요도는 더욱 올라간다. 그럼 바로 어떻게 ..

Android 2022.02.09

안드로이드 코루틴 - async와 await, LifecycleScope과 ViewModelScope

코루틴을 사용하다보면 비동기적으로 동작하는 예를 들면 네트워크 작업 같은게 있다고 예를 들어보자. 간단한 코드부터 보자. class MainActivity : AppCompatActivity() { val TAG = "MainActivity" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) GlobalScope.launch(Dispatchers.IO) { val time = measureTimeMillis { val answer1 = networkCall() val answer2 = networkCall2() Log.d(TAG,..

Android 2022.01.11

안드로이드 action mode

안드로이드에서 Text를 Select 즉 드래그 했을때 나오는 툴들을 변경하고 싶을때가 있다. 예를 들면, 이런식으로, Important를 꾹~ 눌려서 (Long press) Text를 Select한 뒤에 나오는 메뉴에서 '퀵번역'을 추가 하고 싶을 수 있다. 이런걸 구현하려고 하면 간단하게 함수 하나만 override하면 된다. @Override public void onActionModeStarted(final android.view.ActionMode mode) { Menu menu = mode.getMenu(); menu.add("퀵번역") .setEnabled(true) .setVisible(true) .setOnMenuItemClickListener(item -> { //해당 메뉴를 눌렸을 때..

Android/Android UI 2022.01.11

안드로이드 컴포즈 1주차 정리

1주차 코드랩에서는 기존 view 의 리사이클러뷰에 버튼이 달려있고 버튼을 누르면 레이아웃이 늘어나는 간단한 앱을 만드는 것이였습니다. 위 이미지는 코드랩에 예시로 있던 이미지인데 제가 만든것과는 조금 다르지만 거의 비슷합니다. 진행하면서 저는 제 맘대로 조금씩 변경해가면서 만들어 봤는데요. 일단 코드 전문부터 보시죠. class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { Week1JetpackComposeBasics2Theme { // A surface container using the 'backgr..

안드로이드 컴포즈 - GDG DevFest2021 참여하다.

GDG Korea Android 에서 진행하는 DevFest 2021 Android Compose 에 참여하게 됐습니다. https://sites.google.com/view/devfest-korea-2021/compose-codelab Devfest Korea 2021 - Compose Codelab 🤔 Jetpack Compose를 배워야 하는지 고민이신가요? sites.google.com 이 사이트에서 참여를 받았었는데 지금은 이벤트 참여는 끝났지만 그래도 공부는 같이 할 수 있으니 컴포즈에 관심이 있으면 참고하면 좋을거 같습니다. 위 사이트에서는 코드랩을 진행하기 위한 참고영상으로 보면 좋을거 같고 뛰어난 국내 개발자분들이 친절하게 설명해주신다. 실제 코드랩은 https://developer.an..

Android Compose - 컴포즈의 매력을 직접 느껴보자

뭔가 특정 기능에 대한 내용도 아니고 그냥 컴포즈의 멋짐에 대해서 설명하고 싶어서 고민하던 끝에 제목을 이렇게 지었습니다. 일단 바로 코드부터 소개해보겠습니다 @Composable fun MycomposeableView(){ Scaffold { Column( Modifier .verticalScroll(rememberScrollState()) .padding(50.dp) ) { for(i in 1..30){ Greeting("Android") } } } } @Composable fun Greeting(name: String) { Text(text = "Hello $name!") Spacer(modifier = Modifier.size(20.dp)) } 저번 포스팅에 있던 코드를 약간 수정해봤습니다. 그리..

Android Compose 는 무엇일까?

안드로이드 컴포즈는 2018년 구글 io 에서 처음 공개됐고 3년간의 제작기간을 거쳐서 최근에 공개됐다고 합니다. 아니 그전에 컴포즈가 뭐냐구요? 선언적 UI 를 안드로이드에서 사용하게 해주는 멋진 친구입니다. 선언적 UI 는 모바일 크로스플랫폼에서 보였었는데 저는 이게 선언적 UI 인지도 모르고 있었으나 컴포즈를 접하면서 아 이거 플러터나 리액트네이티브에서 봤던거랑 비슷하네? 라고 생각하면서 알게 됐습니다. 선언적 UI 는 말그대로 UI를 코드상에 직접 선언합니다. 기존 안드로이드는 xml 을 통해서 view 를 그리는 방식으로 id를 통해 연결하거나 데이터바인딩을 이용해서 UI 를 처리했었죠. 안드로이드를 조금이라도 해보신 분들은 다 아실거라고 생각합니다. 그러나 컴포즈는 그것과는 다르니 이름도 다르..

RxJava - subscribeOn, observeOn 를 제대로 쓰고 있는걸까?

해당 글은 https://vagabond95.me/posts/is-this-rxjava-1/ [안드로이드] 그런 Rx Java 로 괜찮은가 1 - subscribeOn, observeOn - 기록은 기억을 지배한다 구글은 점점 더 안드로이드 아키텍처를 리엑티브하게 구조화 하려는 움직임을 보이고 있고, Databinding, LiveData 그리고 RxJava 는 그러한 구조화 작업의 핵심 토대를 담당하고 있다. 또한 주력으로 vagabond95.me 을 읽고 깊게 Rx에 대해 고민하지 않았던 스스로를 반성하는 포스팅임을 밝힙니다. ㅜㅜ rx 를 사용하다보면 subscribeOn, observeOn 를 자연스럽게 만나게 된다. 나도 개인 프로젝트에 rx와 retrofit 을 연동해서 값을 받아오고 그 값을..