본문 바로가기

기타 개발 관련/안드로이드 개념 정리15

안드로이드 : 웹뷰에서 주소창 없애기 개요 모바일 하이브리드 앱을 만들던 중에 웹뷰를 한번 만들어봤는데요, 잘 나오기는 하는데 주소창이 보이기 때문에 하이브리드 앱의 느낌이 아니라 브라우저의 느낌이 강하게 들었습니다. 그래서 안드로이드 웹뷰에서 주소창을 없애는 방법을 적용하였고, 이에 대해 간단하게 정리해보겠습니다. 해결법 package com.example.deso_android; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClient; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { privat.. 2022. 8. 30.
안드로이드 - 햇갈리는 Toolbar와 ActionBar 정리 안드로이드의 ToolBar ActionBar 안드로이드를 개발할때 항상 햇깔렸던 것중에 하나인 Toolbar와 Actionbar에 대해서 한번 정리를 해보겠습니다. ActionBar와 ToolBar의 개념 및 차이점 과거 안드로이드는 ActionBar가 기본으로 존재하였고 그것을 커스터마이징 해서 각 앱에 맞게 변경해서 사용하였습니다. 툴바는 안드로이드 5.0 (API Level 21)부터 추가된 위젯(Widget)으로 앱에서 가장 중요한 액션 또는 자주 사용되는 액션들을 제공하는 앱바(AppBar)를 만들때 사용됩니다. 예전에는 AppBar를 만들때 ActionBar클래스를 사용하여 만들어졌는데 그래서 AppBar를 ActionBar라고 부르기도 하며 아직까지 많은 곳에서 이 두 용어를 혼용해서 사용합.. 2019. 9. 20.
안드로이드 - framelayout의 곂친 레이아웃에서 이벤트 클릭 중복 막기 안드로이드상에서 framelayout에 여러 컨텐츠를 넣고 배치할때 가끔 button 또는 layout 클릭이벤트가 중복되어 (즉 상위 컨테이너 이벤트가 하위 컨테이너로 전달되는 경우) 엄청 곤란할 때가 많습니다. 저는 실제로 다이어리 예제 앱을 만들다가 이런 경우가 발생했었는데요.. ㅠ 파란부분에서 캐러셀뷰 이미지 뷰 클릭이벤트를 구현하였고 이 이벤트가 왼쪽 상단 노란부분의 뒤로가기 버튼과 곂치는 일이 발생하였습니다. 그결과 왼쪽 상단 뒤로가기 버튼을 클릭했을 때에도 사진 업로드 팝업이 뜨게 되는 일이 발생하게 되었습니다. 이에 대한 해결법은 매우 간단합니다. // 상단의 TopMenu가 클릭될때 뒤쪽의 캐러셀도 같이 터치되는 동작을 막기위한 코드 RelativeLayout rlTopMenu; rlTo.. 2019. 8. 20.
Lombok 설치시 transformClassesWithDexBuilderForDebug 에러 Android studio 3.1.2 버전에서 gradle 4.10.1 버전으로 앱을 만들고 있던중 Lombok을 적용할 일이 생겼다. compileOnly "org.projectlombok:lombok:1.18.4" annotationProcessor "org.projectlombok:lombok:1.18.4" 위와 같은 형식으로 Lombok을 적용하였는데 다음과 같은 에러가 발생하였다. lombok 1.x.x throws transformClassesWithDexBuilderForDebug 원인은 Java8이 잠재적으로 .class file의 사이즈를 줄이는데 mothod count까지 줄이면서 문제가 발생하는것 같다는 의견이 있었다. 정확한 원인은 파악하지 못했다. gradle.properties에.. 2019. 8. 7.
안드로이드 - 거주지 입력 - 동주소까지 입력받기 (노가다) 안드로이드 동주소 입력받기 안드로이드에서 거주지를 입력하는 화면을 만들고 싶을 때가 있습니다. 주소 검색 API를 쓰는것도 한가지 방법이지만, 만약 동주소까지만 입력받고 싶다면 주소검색 API를 쓰는것이 무겁기도 하고, 목적에 맞지 않는 API 사용일 것입니다. 저는 한가지 방법으로 안드로이드의 res/values/arrays.xml에 - 행정자치구역 - 시 / 군 / 구 - 동주소 (서울시일경우에만) 데이터를 입력한 뒤에 해당 값을 Spinner를 통해 사용자들이 선택하도록 구현해 보았습니다. 눈물의 노가다. 여기서는 해당 arrays.xml 파일을 블로그에 공유하고 간단히 사용법을 메모하려고 합니다. 구현방법 구현하기전에 필요한 값들로는 스피너 3개 ArrayAdapter 3개 res/values/a.. 2019. 6. 24.
안드로이드 - versionCode 와 versionName 안드로이드의 앱 정보 중에서 버전코드와 버전이름이 있습니다. 버전 코드 (versionCode) google Play에 공개 할때 사용하는 것으로 이전보다 높으면 앱을 갱신하게 됩니다. 이전보다 높으면 앱을 갱신하게 됩니다. 앱을 사용하는 유저는 업데이트 정보가 뜨게 됩니다. 버전 이름 (versionName) 버전 이름은 버전 코드와 달리 유저가 확인할 수 있는 정보로 앱 갱신에 영향을 주지 않습니다. 버전 이름은 보통 3자리로 구성되며 다음과 같은 의미가 있습니다. 이것은 정답이 없으므로 상황에 맞게 의미를 부여해 주면 됩니다. android:versionName = "1.0.0" 첫번째 번호 : 컨셉이나 앱이 지향하는 기본 디자인이 변경된 경우 두번째 번호 : 기능 추가나 사양이 변경된 경우 세번째.. 2019. 4. 10.
안드로이드 - volatile 이란 무엇이고, 왜 필요할까? volatile 키워드 volatile 키워드는 Java변수를 Main Memory에 저장하겠다는 것을 명시하는 것입니다. 즉 매번 변수의 값을 Read할 때마다 CPU cache에 저장된 값이 아닌 Main Memory에서 읽는 것입니다. 또한 변수의 값을 Write할 때마다 Main Memory에 까지 작성하는 것입니다. 왜 필요할까? volatile 변수를 사용하고 있지 않은 MultiThread 어플리케이션에서는 Task를 수행하는 동안 성능 향상을 위해 Main Memory에서 읽은 변수 값을 CPU Cache에 저장 하게 됩니다. 만약 MultiThread환경에서 Thread가 변수 값을 가져올때 각각의 CPU Cache에 저장된 값이 다르기 때문에 변수 값 불일치 문제가 생길 수 있습니다. .. 2019. 2. 26.
프레그먼트 - 프레그먼트 생성시 데이터 전달 프레그먼트의 데이터 전달 프레그먼트 생성시에 데이터를 Bundle로 설정해서 key-value값의 데이터를 넘겨줄수 있습니다. 이를 통해 프레그먼트간 전환시나 맨 처음 생성시에 필요한 기본 값들을 setting할 수 있게 됩니다. 프레그먼트생성시 onCreate에 데이터 전달 new Instance 메소드를 통해 필요한 파라미터로 데이터를 전달합니다. 이후 newInstance안에서 Fragment를 생성하고 Bundle를 통해 데이터를 넘겨줍니다. 이 때 Fragment의 setArgument를 사용합니다. 이는 추후에 Fragment의 onCreate에서 getArgument() 메소드를 통해 호출 할 수 있습니다. 프레그먼트 액티비티 생성후 첫 프레그먼트 전환시 사용 예 위의 Fragment의 ne.. 2019. 1. 29.
안드로이드 - 핸들러와 Looper의 동작과정 Handler와 Looper의 필요성 Handler와 Looper는 안드로이드 내에서 Thread 백그라운드 처리에 사용됩니다. 위의 그림은 병렬 처리로 돌아가고 있는 Main과 Sub 쓰레드에서 textView의 setText 메서드 사용시 어떤 것을 처리할지에 대한 이미지 인데요, 이런 동기화문제를 처리하기 위해 안드로이드는 메인 스레이드에서만 UI 작업이 가능하도록 제한하였습니다. Handler와 Looper를 이용해 Sub 쓰레드에서 Main 쓰레드로 UI 처리작업을 전달하거나, Main 쓰레드 자체적으로 처리하던지 해야 합니다. Handler와 Looper의 동작과정 Handler는 단어 그대로 무언가를 처리하는 역활을 합니다. Handler는 Message와 Runnable 객체를 처리합니다... 2019. 1. 28.
안드로이드 - 키스토어 개념 / 사용법 안드로이드에서 키스토어 발급받는 방식 2가지 키 스토어를 발급받는 방법에는 2가지가 있습니다. Android Studio에서 Key Store 생성 및 앱에 서명해서 APK 추출 구글 플레이 콘솔의 기능인 구글 플레이 앱 서명 기능 ex) 앱 서명 창 방법 1 : Android Studio에서 Key Store 생성 및 앱에 서명해서 APK 추출 기존의 앱 서명 개발자가 자신이 만든 키로 안드로이드 앱을 서명하고 구글 플레이에 업로드 합니다. 이 키를 잃어버리게 되면 아무리 내 구글계정으로 올린 앱이라고 하더라고 두번다시 이 앱을 업데이트 할 수 없습니다. 같은 키로 apk 서명을 해야 하는데 할 수가 없기 때문입니다. 방법 2 : 구글 플레이 콘솔의 기능인 구글 플레이 앱 서명 기능 새로운 방식 ( 구.. 2019. 1. 9.