Android

Android

[시골책방] 앱 출시 !!

안녕하세요 오랜만에 글을 써 봅니다. 오늘은 행사나 개발 주제가 아닌 제가 개발한 앱을 주제로 글을 써볼려고 합니다. 물론 잘만들었다기보다는 첫 앱을 출시했기때문에 뿌듯한 감정이 있네요. 올 한해는 저에게 많은 태그들이 달려가고 바삐 움직여 가고 있는 한 해 인것 같습니다. 이와 관련된 이야기는 회고를 통해 다시 글을 써내려 가보도록 하겠습니다. 7월 19일자로 제가 공부하며 만든 앱을 출시 하게되었습니다. 여러가지 기능을 추가하여 출시하고 싶었지만 그렇게 하다가는 출시를 못하게될것 같아서 최소 기능으로 출시를 해버렸습니다.ㅎㅎ 시골책방 - 우리들의 독서 소통 공간 - Google Play 앱 📌 책을읽고 느낀 감정을 공유해보세요. 📌 관심있는 책을 저장해보세요. 📌 읽고 싶은 책을 검색 할 수 있어요...

Android

[Android] Only fullscreen opaque activities can request orientation

2019.01.03 안녕하세요 이번에는 "Only fullscreen opaque activities can request orientation"오류를 대처하는 방법에 대해서 알아보겠습니다. 해당 오류는 TargetSdk 27이상으로하는 앱의 Android OS 8.0에서 투명Activity에 가로/세로 화면고정을 했을때 나타나는 현상입니다. or @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);..

Android

[Android] View에 대해서 알아보자 - ViewLifeCycle

2019.11.15 개발하면서 경험했던 것을 정리한 포스트입니다. 오류 지적이나 제안 언제든지 환영합니다. View View는 드로잉 및 이벤트처리를 담당하는 사용자 UI 구성요소의 기본 클래스이며, View를 상속받아 구현된 TextView, Button과 같은 특정 기능을 하는 View를 위젯(Widget) 또는 컴포넌트(Component)라고도 합니다. 새로운 View를 만들기 위해서는 View를 상속받아 구현해야합니다. 하지만 이런 View를 배치하기위해서는 ViewGroup 혹은 Container가 필요합니다. ViewGroup또한 View를 상속받아 구현되어있으므로 ViewGroup안에 ViewGroup이 들어갈수도 있습니다. ViewGroup 위에서 잠깐 설명했지만 ViewGroup은 다른 ..

Android

[Android] Mac에서 Android SDK Path 설정 및 무선 ADB 연결

2019.11.17 Mac에서 터미널을 통해 adb 명령어를 실행하고 싶을 때가 종종 있습니다. Windows에서는 Android SDK가 설치된 경로를 환경변수로 등록해놓으면 되는데, Mac에서도 방법은 비슷합니다. 다만, Mac에서 Android SDK가 설치되어 있는 폴더 위치를 몰라서 Path 등록을 못하는 경우가 종종 있습니다. 그럼 이제 Mac에서 Sdk Path를 등록하여 터미널에서 adb를 명령어를 사용 할수 있도록 하고 Android Studio에서 무선으로 디버깅을 할 수있도록 adb를 이용해 설정해보겠습니다. ● Mac에서 Android SDK가 설치되는 폴더 사용자가 임의로 폴더 위치를 수정하지 않았다면, 기본적으로 Android SDK는 다음 위치에 설치됩니다. /Users/[사용..

Android

[Android] Q Scoped Storage - MediaStore로 화면 스크린샷 저장하기 - Android Q

2019.10.29 안드로이드 Q부터 Storage정책이 변경되었습니다. 우선 기존 Q 이전에서는 어떻게 적용되었는지, Q 이후에는 어떻게 적용되는지 살펴보겠습니다. ● Android Q 이전 개별 앱만 접근 가능 외부 저장소 권한이 있으면 누구나 접근이 가능 - READ_EXTERNAL_STORAGE - WRITE_EXTERNAL_STORAGE ● Android Q 이후 샌드박스 저장공간 - 개별 앱만 접근 가능 - 읽고 쓰기 위한 별도의 권한 필요 없음 - Context.getExternalFilesDir(...) - 앱 삭제 시 함께 삭제됨 - 앨범 아트, 썸네일 등 다른 앱과 공유할 필요가 없는 미디어 파일은 샌드박스 공간을 활용 공용 저장공간 - MediaStore.Audio - MediaSto..

Android

[Android] MediaController dispatchKeyEvent not called

2019.10.22 안녕하세요. VideoView를 사용하면서 MediaController가 Showing일때 backpressed가 안먹히는 현상에 대해서 공유하려고 합니다. 이 현상은 Target SDK 28로 올렸을때 발생할 수 있는 현상입니다. Target SDK 28의 변경사항으로 UI포커스 대한 부분이 있습니다. 1. 너비나 높이가0인 뷰는 포커스가 불가능 합니다. 2. 터치모드에서는 활동이 더 이상 초기 포커스를 암시적으로 할당하지 않습니다. 원하는 경우 명시적으로 요청해야합니다. MediaController가 Showing일때 Backpress이벤트가 감지 되었을때 ViewGroup의 focus가 항상 null로 나타나는 현상이였습니다. 이때 2번의 내용처럼 명시적으로 focus를 요청해야..

Android

[Android] Gradle Dependency Conflict문제 해결하기

2019.10.18 안녕하세요. 여러모듈을 사용하면서 Android Build를 하게되면 Dependency의 Duplication class에러가 엄청나게 뜨는 경험이 있으실 겁니다. 이에 대한 내용을 공유하려고 합니다. (각각의 모듈에서 버전관리가 제대로 안되어있는 경우 발생할 수있습니다.) Android Terminal에서 아래 명령어를 치면 사진과 같은 결과를 얻을 수 있습니다. ./gradlew app:dependencies ./gradlew app:dependencies --dependency modulename //모듈과함께 ./gradlew app:dependencies --configuration compile //의존성 구성값과함께 (*) 으로 표시되어 있는 부분이 중복으로 Depend..

Android

[Android] ViewHolder패턴을 활용한 Base ListView 만들기

2019.09.20 개발하면서 경험했던 것을 정리한 포스트입니다. 오류 지적이나 제안 언제든지 환영합니다. 안녕하세요. 이번 포스팅에서는 ListView 혹은 RecyclerView에서 Adapter를 매번 만들어 써야 하는 귀찮고 수고스러운 부분을 Base를 두어 공통으로 처리하는 방법을 알아보겠습니다. (먼저 ListView를 알아보고 다음 이어진 포스팅에서 RecyclerView에 대해 알아보도록 하겠습니다.) 우선 기존 ListView를 작성하는 방법에 대해 알아보고 다음 ViewHolder패턴을 활용한 Base처리 방법으로 넘어가겠습니다. ListView Adapter 기존 ListView는 List가 여러 개일 때 아래와 같이 Adapter를 Custom ListViewAdapter1, Cus..

Android

[Android] 빌드에러 : Execution failed for task ':app:packageDebug'.

2019.09.06 안드로이드 스튜디오 빌드중에 Execution failed for task ':app:packageDebug'. 에러를 종종 볼수 있습니다. 해당 에러는 Clean Build and Rebuild or Invalidate Caches 를 통해 간혹 해결되기도 하지만 몇번 빌드하다 보면 다시 나타는 녀석입니다. 이 에러는 여러가지 라이브러리를 가져다 쓰는중에 라이센스파일 충돌 혹은 라이브러리 중복 로드로 인해 발생합니다. 오류를 해결하기위해 Build.Gradle(:app)의 android 스크립트내부에 아래코드를 추가하여 빌드하면 오류를 해결 할 수 있습니다. packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-I..

Android

[Android] 키보드 올리기 / 숨기기 (android keyboard show / hide)

2019.08.26 개발하면서 경험했던 것을 정리한 포스트입니다. 오류 지적이나 제안 언제든지 환영합니다. 안드로이드를 개발하다보면 화면 전환으로 인해 자동으로 키보드가 올리고 / 숨기고 하도록 구현해야할때가 있습니다. 오늘은 이러한 방법을 알아보겠습니다. InputMethodManager 객체생성 InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 키보드 보이기 public boolean showSoftInput(View view, int flags) { throw new RuntimeException("Stub!"); } InputMethodManager inp..

Android

[Android] Android Studio Live Template 알아두기#2

2019.08.13 개발하면서 경험했던 것을 정리한 포스트입니다. 오류 지적이나 제안 언제든지 환영합니다. 이전 글 [ Live Template 알아두기#1 ] 안녕하세요 지난 포스팅에 이어 Java, Kotlin코드에서 Live Template을 작성해 보도록 하겠습니다. 우선 지난포스팅에서는 아래와 같이 XML에서 간단하게 약어로 미리 설정해둔 값을 자동완성 하여 작성해보았습니다. 이제 Java or Kotlin코드로 작성을 해봅시다. Live Template에서 미리정의 된 값을 가져오거나 사용자가 수정할 수 있는 필드로 선언하여 사용 할 수 있습니다. Temaplate내 변수는 다음과 같이 선언됩니다. $variable_name$ 변수를 사용하여 작성한 템플릿을 볼까요? 이렇게 오늘날짜를 받아와 ..

Android

[Android] Android Studio Live Template 알아두기#1

2019.08.12 개발하면서 경험했던 것을 정리한 포스트입니다. 오류 지적이나 제안 언제든지 환영합니다. 다음 글 [ Live Template 알아두기#2 ] 안녕하세요 이번 주제는 Live Template에 대해서 다루어보겠습니다. 우선, Live Template가 무엇이냐? Live Template은 안드로이드 스튜디오에서 제공하는 사용자가 설정한 축약형 단어로 지정해놓은 Template을 생성해 주는 기능입니다. 이렇게 함으로써 타이핑속도와 개발 속도를 엄청나게 향상시켜 주는 아주 유용한 기능입니다. 그럼 어떻게 사용하는지 알아 볼까요? 기존에는 ConstraintLayout을 사용할 때 View와의 Contract를 지정할 때 이렇게 하나씩 입력 하셨다면, Live Template를 사용하면 짠..

hjiee
'Android' 카테고리의 글 목록
상단으로