본문 바로가기
반응형

안드로이드19

onUserLeaveHint 홈키 눌럿을때 이벤트 https://developer.android.com/reference/android/app/Activity Activity | Android Developers developer.android.com Called as part of the activity lifecycle when an activity is about to go into the background as the result of user choice. For example, when the user presses the Home key, onUserLeaveHint() will be called, but when an incoming phone call causes the in-all Activity to be automatically .. 2023. 7. 12.
[Android] 앱에서 스크린 캡쳐 막기, recent app 썸네일 가리기 앱에서 스크린샷을 막는 방법은 아주 간단하다 액티비티 안에서 FLAG_SECURE를 SET 해주면 된다. getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); 허나 이 플래그를 언제 SET해주는게 좋을 까? 케이스는 2가지 이다 1. 앱 사용 내내 스크린샷을 막고 싶을 때 이는 onCreate()에서 set 해주면 된다 public void onCreate() { getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); } 2. 앱에서 스크린샷은 허락하나 recent app으로 넘어갈때 스냅샷을 막고 싶을 때 만약 앱에서 screenshot은 허용하나 recent app으로 넘어갈 때 썸네일 이.. 2022. 7. 12.
[Android] RecyclerView 데이터 꼬일 때 대량의 데이터를 단순 출력하는데에는 RecyclerView가 최고의 선택일 것이다. 허나 단순출력을 넘어 데이터에 리스너등을 달아주는 순간 데이터가 꼬이기 시작한다. 이러한 문제의 원인은 ViewHolder를 재사용함에 있어서 발생하는 문제이다. 그럼 어떻게 해결해야 할 까? 걍 리스트뷰를 쓰는게 나을까? 해결방법1 : 재활용 막기 holder.setIsRecyclable(false); 위와같이 홀더의 재활용을 막으면 데이터 꼬임 문제를 해결 할 수 있다. 하지만 이렇게 하면 리사이클러뷰를 사용하는 의미가 없다 해결방법2 : 재활용 될 때 뷰를 초기화 하기 내가 찾은 해결방법은 onViewRecycled(ViewHolder holder) 메소드를 재 정의 하는 것이다. 뷰가 재활용 될 때 홀더를 싹다 초.. 2022. 6. 28.
[Android] Room DB 에서 query함수 동작 안할 때 데이터베이스에 직접 쿼리를 날리고 싶어서 객체를 까보니 query 함수가 있다. 헌데 동작을 안한다 망할. 하루종일 찾아보니 execSQL 함수를 쓰니 동작한다. 도대체 저 query 메소드는 정체가 뭘 까? 하루종일 고생했네 //db.getOpenHelper().getWritableDatabase().query("UPDATE user SET value = '123'"); db.getOpenHelper().getWritableDatabase().execSQL("UPDATE user SET cookTime = '123'"); 2022. 6. 24.
[Android] Recycler View 사용하기 https://developer.android.com/guide/topics/ui/layout/recyclerview RecyclerView로 동적 목록 만들기 | Android 개발자 | Android Developers RecyclerView로 동적 목록 만들기 Android Jetpack의 구성요소 RecyclerView를 사용하면 대량의 데이터 세트를 효율적으로 표시할 수 있습니다. 개발자가 데이터를 제공하고 각 항목의 모양을 정의하면 R developer.android.com 1. Recycler View란? 데이터를 리스트로 나타내주는 뷰 이다. 아니 그럼 리스트뷰 쓰면 되지 왜 Recycler View를 쓰는가? 그 이유는 리스트뷰가 가지고 있던 성능문제를 Recycler View는 해결했기.. 2022. 6. 15.
[Android] Service 배우기 https://developer.android.com/guide/components/services?hl=ko 서비스 개요 | Android 개발자 | Android Developers 서비스 개요 Service는 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션 구성 요소이며 사용자 인터페이스를 제공하지 않습니다. 다른 애플리케이션 구성 요소가 서비스를 시 developer.android.com 서비스란? 서비스는 안드로이드 어플리케이션을 구성하는 4개의 컴포넌트(액티비티, 서비스, 브도르캐스트, 컨텐트 프로바이더) 중 하나로 백그라운드에서 수행작업을 할 때 사용되는 구성요소이다. 서비스의 타입 서비스는 총 3가지의 타입이 존재한다 1. Foreground 서비스 포어그라운드 서비스는 유.. 2022. 5. 25.
[Android] Canvas를 이용하여 UI 그리기 https://developer.android.com/training/custom-views/custom-drawing 맞춤 그리기 | Android 개발자 | Android Developers 맞춤 뷰에서 가장 중요한 부분은 디자인입니다. 맞춤 그리기는 애플리케이션의 필요에 따라 쉽거나 복잡할 수 있습니다. 이 과정에서는 가장 일반적인 작업 몇 가지에 관해 설명합니다. 맞춤 뷰 developer.android.com 먼저 이를 배우기 전에 Custom View에 대한 대략적인 개념을 학습하고 오자 https://lucky516.tistory.com/173 [Android] Custom View 만들기 https://developer.android.com/training/custom-views/creat.. 2022. 4. 14.
Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager 오늘 갑자기 저 에러가 자꾸 뜨면서 앱이 빌드가 안됨.. 원인을 찾아보니 gradle sync 할 때 dx 파일이 없다고 자꾸 나옴 방법을 찾아보니 다른사람들은 다 컴파일러를 다운그레이드 하는 방법만나옴 좀더 찾아보니 dx라는게 31버전부터 d8로 바뀌었다고 함. 도로 dx로 바꾸어주면 해결 C:\Users\User\AppData\Local\Android\Sdk\build-tools\31.0.0 d8.bat 을 dx.bat으로 바꾸어준다 C:\Users\User\AppData\Local\Android\Sdk\build-tools\31.0.0/lib d8.jar를 dx.jar로 바꾸어준다 2022. 4. 13.
[Android] Content Provider 컨텐트 프로바이더 https://developer.android.com/guide/topics/providers/content-providers 콘텐츠 제공자 | Android 개발자 | Android Developers Content providers manage access to a structured set of data. They encapsulate the data, and provide mechanisms for defining data security. Content providers are the standard interface that connects data in one process with code running in another process developer.android.com 1. Cont.. 2022. 4. 5.
[Android] Property Animation, 속성 애니메이션 https://developer.android.com/guide/topics/graphics/prop-animation 속성 애니메이션 개요 | Android 개발자 | Android Developers 속성 애니메이션 개요 속성 애니메이션 시스템은 거의 모든 항목을 애니메이션으로 만들 수 있는 강력한 프레임워크입니다. 애니메이션을 정의하여 화면에 그리는지에 관계없이 시간 경과에 developer.android.com 프로퍼티 애니메이션, 속성 애니메이션이란? 안드로이드에는 수많은 애니메이션이 있다. 그중 가장 강력한 애니메이션을 뽑자면 당연 프로퍼티 애니메이션이다. 프로퍼티 애니메이션은 거의 모든것을 애니메이션화 시킬 수 있다 프로퍼티 애니메이션이란 특정한 값(프로퍼티)가 변화할 때, start값과 e.. 2022. 2. 9.
path/to/sdkmanager --install "cmdline-tools;latest" 맥북 설정하다가 저런 에러가 났다 이 에러는 무엇이냐 sdk manager에서 저놈을 설치안해서 생긴일이다 2022. 1. 28.
[Android] 안드로이드 transition animation https://developer.android.com/training/transitions 전환을 사용하여 레이아웃 변경 애니메이션 처리 | Android 개발자 | Android Developers 전환을 사용하여 레이아웃 변경 애니메이션 처리 Android의 전환 프레임워크를 사용하면 단순히 시작 레이아웃과 종료 레이아웃을 제공하여 UI에서 모든 종류의 모션을 애니메이션으로 보여줄 수 developer.android.com 1. Android Transition Framework Transition Animation이란 하나의 프래그먼트에 두개의 레이아웃을 정의 한 후 두 레이아웃간에 애니메이션을 넣는 기법이다. 안드로이드 transition framework는 startting layout과 end.. 2022. 1. 7.
코루틴 배우기 https://kotlinlang.org/docs/coroutines-guide.html Coroutines guide | Kotlin kotlinlang.org 코루틴 소개 코루틴은 간단히 설명하면 경량화된 스레드 + 다른언어의 async 키워드의 조합이라 생각하면 편하다. 하지만 차이점은 상당히 많다는 점을 기억! 코루틴은 kotlinx.corutines 라이브러리에 담겨있다. 코루틴의 정의 A coroutine is an instance of suspendable computation. It is conceptually similar to a thread, in the sense that it takes a block of code to run that works concurrently with t.. 2021. 12. 29.
안드로이드 inflate, inflater란? fragment, recyclerview를 공부하는데 inflate, inflater라는게 계속 등장하며 View를 하나 리턴하는데 이 View가 도대체 뭔지 몰라서 검색해서 찾아보니 다음과 같았다. inflate라는 작업은 xml을 파싱해서 객체화 시켜주는 작업을 말한다. 즉 inflater의 return의로 나오는 View는 내가 넣어준 xml이 파싱되서 나온 View 라는 것이다! 2021. 7. 19.
안드로이드 onSaveInstanceState onSaveInstanceState 이게뭐임? 안드로이드 액티비티는 다양하게 종료될 수 있음. 예를들어 스마트폰의 메모리가 부족할경우 안드로이드는 실행되고있는 앱들을 죽이기 시작함. 이때 앱이 죽기전에 엉엉 울면서 onSaveInstanceState라는 메소드에 자신의 유산을 남기고 죽을 수 있음. 어케씀? 1. 액티비티 클래스에 onSaveInstanceState 를 오버라이딩 하셈 2. 남기고 싶은 데이터를 key, value 쌍으로 Bundle에 저장한다 3. 액티비티 onCreate때 onSaveInstanceState 에서 key값으로 유산을 찾으면 됨 예제좀 다음예제는 앱이 죽기전에 사랑했던 물고기의 이름을 남기는 예제이다 앱은 죽기전에 "내가 사랑했던 물고기" 라는 key값과 "붕어"라는 v.. 2021. 7. 8.
안드로이드 ViewModel 사용하기 ViewModel 이란? 안드로이드 앱에 UI에 관한 정보를 담는 클래스이다 ViewModel 왜 씀? 내가 스마트폰에서 세로 기준으로 버튼을 누르면 숫자가 올라가는 앱을 만들었다고 하자 그런데 스마트폰을 가로로 돌리면 숫자가 초기화 된다. 이유는 간단하다. 가로로 돌리면 액티비티가 파괴되고 처음부터 onCreate를 시작으로 다시 생성되기 때문 이때 ViewModel에 데이터를 저장하면 UI에 관한 데이터를 보존할 수 있다. 안드로이드 공식 문서에도 앱을 설계할 때 아래와 같이 ViewModel + LiveData로 UI데이터를 보존하라고 명시하고 있다. https://developer.android.com/jetpack/guide?hl=ko 앱 아키텍처 가이드 | Android 개발자 | Androi.. 2021. 7. 8.
안드로이드 LiveData 기본예제 LiveData란? LiveData란 UI에 사용되는 데이터를 저장하는 class이다. 왜씀? 장점이 뭐임? UI에 사용되는 데이터가 바뀌면 그걸 실시간으로 반영해줌. 가령 내가 TextView에 Hello World! 라고 적었는데 이걸 Hell World!라고 바꿧다고 치자 그럼 나는 이걸 UI에 반영하려면 text = "Hell World!"; textView.setText(text); 라고 적어야 되는데 라이브 데이터를 이용하면 text = "Hell World"; //textView.setText(text); { boungaCounter.setValue("Number Of Bounga is " + Integer.toString(count++)); }); } } 결과 ADD BOUNGA 버튼을 클.. 2021. 7. 1.
안드로이드 Fragment 사용하기 Fragment란? 프래그먼트란 액티비티 위에서 화면을 유동적으로 구사해주는 안드로이드의 기법이다. 위 그림은 똑같은 앱을 테블릿과 스마트폰에 뛰운 모습이다. 테블릿은 한 화면에 두개의 프레그먼트를 보여주고 스마트폰은 하나의 프래그먼트를 보여준다. 보통 화면전환으로 intent를 이용한 액티비티전환을 많이 배우는데 속도도 느리고 코드관리도 어려와 나온 기능이다. 위와같은 그림으로 MainActivity에 프래그먼트가 들어갈 틀을 선언하고 틀 위에 올려놓을 프래그먼트를 여러개 만들어 끼우고 빼고 하는게 가능하다. 그럼 본격적으로 만들어보자 activity_main.xml 위의 이미지처럼 버튼두개를 만들고 프래그먼트가 들어갈 FrameLayout을 만들었다. 아직 아무 프래그먼트가 들어가지 않았으므로 텅 비.. 2021. 6. 30.
[Android] kotlin에서 안드로이드 Fragment 제거하기 Fragment를 add 해주고 add 해준 클래스로 remove를 하려 하니 아무것도 하지 않아서 한참 헤멨다 아래처럼 add할때 tag 달아준 뒤에 tag기준으로 remove 해주어야 한다 그럼 Fragment가 지워진다. supportFragmentManager.commit { supportFragmentManager.findFragmentByTag("mytag")?.let { remove(it) } } 2021. 6. 14.
반응형