안드로이드 192

[Android] DB Realm Migration

Migration이란? Realm은 모바일에 최적화된 데이터베이스 입니다. 기존에 Realm을 적용한 앱을 배포한 수 Realm의 데이터를 수정한 후 다시 앱을업데이트하게 되면 데이터베이스가 어떻게!?변경 되었는지를 알려줘야 합니다. 그렇지 않으면 io.realm.exceptions.RealmMigrationNeededException: 에러와 함께 실행중지가 됩니다. 이때 필요한게 바로 Migration입니다. Realm Diary 데이터로 사용하는 Person객체가 있습니다. PrimaryKey 인 id 와 이름(name), 성별(gender), 나이(age) 그리고 일기 리스트(diaries) 이렇게 5개의 정보를 가진 객체입니다. 1.Realm을 초기화 해주는 부분에서 schemaVersion설..

안드로이드 2022.11.04

[Android] Lottie 애니메이션

Lottie 애니메이션 Lottie는 AirBnb 개발자 분들이 만든 오픈소스 라이브러리 입니다. 보다 높은 퀄리티의 애니메이션 효과를 네이티브 앱에 적용시키는데 도움을 줍니다. After Effects를 사용한 애니메이션 파일 -After Effects툴을 이용해 json형식의 애니메이션 파일을 만들면 네이티브 앱에 적용시킬 수 있습니다. 이를 위한 도구가 바로 BodyMobin입니다. 개발자 분과 함께 더욱 멋진 애니메이션 앱을 만들기 위해서 UI/UX디자이너 분들은 After Effects를 공부해 보고 적용해 보는것도 좋을 것 같습니다. 앱에 Lottie 적용해 보기 Lottie는 Android, IOS, React Native App, Web모두 호환이 가능합니다. 1.Sample파일 받기 Lo..

안드로이드 2022.11.04

[Android] DrawerLayout 숨겨있다가 액션 취하면 나타나는 기능

DrawerLayout 숨겨있다가 액션 취하면 나타나는 기능 -평소에는 화면의 한쪽에 숨겨져 있다가 사용자가 액션을 취하면 화면에 나타는 기능을 만들 수 있게 해주는 레이아웃 1. DrawerLayout자체가 화면에 나타나거나 사라지는 동작을 수행하는것으로 오해하면 안됩니다. DrawerLayout에 추가된 자식이 DrawerLayout의 영역 안에서 Drawer(서랍)와 같은 동작을 수행하도록 만들어 주는것이다. 그리고 DrawerLayout에 추가된 모든 자식들이 Drawer로 동작하는 것이 아니라는 사실에도 주의해야 합니다. 자식들 중 layout_gravity속성 값을 가지지 않은 자식은 기본적으로 표시되는 주화면으로 취급되고, layout_gravity속성 값을 가진 자식만이 Drawer로써 동..

[Android] Coordinatorlayout에 대해 알아보자

Coordinatorlayout에 대해 알아보자 1.AppbarLayout 단, api level 24이상에서는 support:design library가 포함되어이 있어서 바로 CoordinatorLayout을 추가해도 되지만 그 이하에서는 gradle 파일에 아래 dependency를 추가해 준다. CoordinatorLayout은 frameLayout처럼 parent view 역할을 한다. 이제 이 안에 적절한 view들을 넣어줄 차례인데, 가장 일반적으로 많이 쓰이는 Appbar를 한번 추가해보자. 참고로 Appbar는 api level 11부터 지원하는 Actionbar와 api level 21부터 지원하는 Toolbar를 포괄적으로 부르는 용어이다. CoordinatorLayout은 다음의 2..

[Android] Di(Dependency Injection) Koin에 대해 알아보자

Di(Dependency Injection) Koin에 대해 알아보자 DI(Dependency Injection)이란? Dependency는 의존성이고 Injection은 주입이란 의미라 단순 번역은 의존성 주입입니다. 의존성이란 A라는 클래스가 내부에서 B라는 클래스를 참조하는 경우 A클래스->B클래스 의존성을 갖는다고 할수 있다. Ioc(Inversion of Control) 제어역전이란 말로 해석이 되며, 제어역전은 개발자가 직접 프로그램의 흐름을 제어하는 코드를 작성하지 않고 외부 프레임워크의 흐름 제어를 받도록 하는 개발 원칙으로 Ioc를 따라 소프트웨어를 개발하면 인스턴스의 생성이나 이벤트 처리등의 호출을 프레임워크가 알아서 해주게 됩니다. 간단히 말하면 모든 제어 권한을 자신이 아닌 다른 대..

안드로이드 2022.11.04

Android KeyStore

http://blog.naver.com/PostView.nhn?blogId=aepkoreanet&logNo=221429089807&categoryNo=0&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView Android KeyStore 와 Android Keystore KeyStore 와 Keystore 는 한글로 읽으면 둘 다 키스토어 이기 때문에, 동일한 단어로 들리지만, 실제로 ... blog.naver.com KeyStore 와 Keystore는 한글로 읽으면 둘 다 키스토어 이기 때문에, 동일한 단어로 들리지만, 실제로 다른 의미를 가지고 있기 때문에 이에대한 정리를 하였습니다. 앱(App) 개발자를 위한 key..

안드로이드 2022.11.04

[Android] Gradle KeyStore 셋팅

Android Gradle KeyStore 셋팅 프로젝트 폴더 밑에 keystore 폴더 생성 후 키스토어 파일 넣어준다. 그래들 셋팅 signingConfigs{ release{ storeFile file("../keystore/debug.keystore") keyAlias 'androiddebugkey' keyPassword 'android' storePassword 'android' } debug{ storeFile file("../keystore/debug.keystore") keyAlias 'androiddebugkey' keyPassword 'android' storePassword 'android' } } debug{ minifyEnabled true proguardFiles getDefau..

안드로이드 2022.11.04

[Android] Fragment 객체 생성 이유

Fragment new Instance public static HogeFragment newInstance(){ HogeFragment fragment = new HogeFragment(); Bundle args = new Bundle(); fragment.setArguments(args); return fragment; } 프래그먼트 생성시 newInstance()로 객체를 생성하는 이유 안드로이드는 메모리가 부족하게 되면 액티비티를 파기하여 메모리를 확보합니다. 액티비티 뿐만 아니고 메모리가 부족하면 프래그먼트도 파기되며 필요시, 재생성되게 됩니다. //문제 AFragment f = new AFragment(num); 위와같은 생성자를 만든다면 비어있는 생성자를 만들어주지 않으면 에러가 발생하게 됩..

안드로이드 2022.11.04

[Android] Fragment replace add 차이

안드로이드 Fragment replace vs add replace() 동일한 containerViewId로 추가 했던 모든 프래그먼트에 대해서 remove(Fragment)를 호출하고 새로운 프래그먼트를 추가하는 것이다. add() 동일한 containerViewId로 추가 했던 프래그먼트를 remove하는 것이 아니라 그 위에 프래그먼트를 추가하게 된다. 예) addToBackStack()이 사용되지 않은 add() Activity add Fragment A add Fragment B add Fragment C remove Fragment C [Back button] Activity - onDestroy() Fragment A : onDestroy() Fragment B : onDestroy() 백버..

안드로이드 2022.11.04