반응형

안드로이드 53

안드로이드 스피너(Spinner, Kotlin)

스피너는 위와 같이 여러 개의 값 중에 하나의 값을 선택할 수 있도록 하는 방법 중 하나이다. 스피너는 초기에 기본값으로 설정된 값을 표시하고 있으며, 클릭 시 드롭다운 메뉴를 표시하여 자신이 원하는 값을 선택할 수 있다. 스피너에 제공하는 값들은 SpinnerAdapter를 통해 제공되는데, 값들을 어떠한 자료 구조에서 가져오느냐에 따라 배열의 경우 ArrayAdapter, 데이터베이스 쿼리에서 가져오는 경우 CursorAdapter 등을 사용할 수 있다. 이번 글에서는 ArrayAdapter를 사용하여 배열 구조에서 값들을 가져와보도록 하자. XML 만들기 스피너에 사용할 값들이 사전에 결정된 경우에는 문자열 리소스 파일을 정의하여 사용할 수 있다. 토끼 곰 호랑이 사자 고양이 먼저, res/valu..

안드로이드 커스텀 다이얼로그(CustomDialog, Kotlin)

다이얼로그는 사용자에게 결정을 내리거나 추가 정보를 입력하라는 메시지를 표시하는 창이다. 다이얼로그는 보통 화면을 가득 채우지 않고, 사용자가 다음으로 진행하기 전에 조치를 취해야 하는 이벤트에 사용된다. 이런 다이얼로그를 생성하기 위한 일반적인 방법으로 AlertDialog를 사용하는 방법이 있는데, 이 글에선 AlertDialog가 아니라 사용자가 직접 정의하는 CustomDialog를 만드는 법에 대해서 알아보자. CustomDialog 기본적으로 다이얼로그라는 창을 사용자에게 보여주기 위해선 해당 창을 디자인해야 할 것이다. 그러니 가장 처음으로 우리가 만들 CustomDialog의 레이아웃을 만들어보도록 하자. 여기서 사용할 레이아웃은 위와 같이 아주 간단하게 만들어봤다. 다음으로 CustomD..

안드로이드 AlertDialog(Kotlin)

다이얼로그는 위의 사진처럼 사용자에게 결정을 내리거나 추가 정보를 입력하라는 메시지를 표시하는 창이다. 다이얼로그는 보통 화면을 가득 채우지 않고, 사용자가 다음으로 진행하기 전에 조치를 취해야 하는 이벤트에 사용된다. 이 글에선 간단하게 사용가능한 다이얼로그인 AlertDialog를 사용하는 법에 대해 알아보자. AlertDialog 적당한 프로젝트를 하나 생성하고, layout파일부터 작성해보도록 하자. layout에 버튼 하나를 추가하여 해당 버튼을 누르면 Dialog가 나오도록 코드를 작성해보자. class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreat..

안드로이드에서 네이버 지도 사용 (Kotlin)

안드로이드에서 네이버 지도를 사용하는 법에 대해서 알아보자. 가장 먼저 API 이용을 위해 네이버 클라우드 플랫폼 페이지로 들어가 준다. https://www.ncloud.com/ NAVER CLOUD PLATFORM cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification www.ncloud.com .해당 페이지에서 로그인을 한 뒤 서비스 -> Application Service -> Maps로 들어가 준다. 그러면 위와 같은 화면으로 이동하는데, 여기서 이용 신청하기를 선택한다. 다음으로 이동하는 페이지에서 Application 등록을 선택하여 새로..

JAR, DEX, APK, AAR파일

JAR(Java Acrchive) JAR은 해당 플랫폼에서 JAVA 응용 프로그램을 배포하기 위해 고안된 패키지 파일 형식이다. 여기엔 컴파일된 Java클래스 파일과 MANIFEST와 같은 파일이 포함되어 있다. 기본적으로 일부 제한이 있는 ZIP 아카이브 형태이다. DEX(Dalvik Excutable) DEX는 바이너리 파일 형식으로 컴파일된다. .dex파일은 DVM(Dalvik Virtual Machine)용이며, JVM용 .class파일과 유사하다. DEX파일 형식은 실제로 Android SDK의 Dex 컴파일러에 의해 Java CLASS파일에서 생성된다. 이 컴파일러는 JVM바이트코드를 DVM바이트코드로 변환하고, 모든 클래스 파일을 하나의 Dex파일에 저장한다. APK(Android Appli..

View와 ViewGroup

안드로이드에서 사용자에게 실제로 보여지는 UI요소는 크게 View와 ViewGroup으로 이루어져있다. View View는 안드로이드 화면에 보이는 모든 객체들을 말한다. 예를 들면 Button, TextView, EditText, ImageView등등.. 사용자에게 보이는 모든 것들을 View라고 하며, 이들은 View클래스를 상속받고있다. 또한 각각의 View들은 자신이 어디에 배치되어야 하는지에 대한 정보를 갖고있지않다. 때문에 View만으로는 화면에 나타날 수 없으며, View를 화면에 배치하기 위해선 반드시 ViewGroup이 필요하다. ViewGroup ViewGroup은 Group이라는 단어에서 알 수 있듯이 여러개의 View들을 모아놓은 것이라고 할 수 있으며, n개의 View를 담을 수 ..

ANR(Application Not Responding)

ANR? ANR은 안드로이드에서 발생하는 오류 중 하나로 Application Not Responding의 약자이다. 이 오류는 Android 앱의 메인 스레드(UI 스레드)가 너무 오랫동안 차단되면 발생한다. 주로 오랜 시간을 요구하는 작업의 결과를 UI에 반영하려고 할 때 발생하는데, 네트워크 통신을 수행할 때 시간이 오래 걸리면 ANR오류가 발생할 수 있다. ANR이 발생하는 조건은 다음과 같다. 1. App이 사용자의 Input에 5초 이상 반응하지 않을 때 2. BroadcastReceiver가 10초 이내에 작업을 끝내지 못했을 때 위 조건만 봣을 때 단순히 시간이 오래 걸리면 ANR이 발생한다고 생각할 수도 있지만, 이보다는 메인 스레드가 일정 시간 동안 어떤 Task에 잡혀 있으면 ANR이..

View.GONE과 View.INVISIBLE의 차이

안드로이드 프로그래밍을 할 때 개발자는 View의 Visibility를 설정할 수 있다. 이때 View를 보여주려면 View.VISIBLE, View를 숨기려면 View.GONE 또는 View.INVISIBLE을 쓸 수 있는데 여기서 GONE과 INVISIBLE는 둘 다 View를 숨기지만 차이점이 있다. 먼저, INVISIBLE의 경우는 View를 화면에 그리지만 사용자에게 보여주진 않는다. 즉, View가 실질적으로 그려져 있기 때문에 Layout에 공간을 차지하고 있다. 반면, GONE의 경우 화면에 View를 그리지 않고, 때문에 Layout에 공간을 차지하지도 않는다. 때문에 View들을 일렬로 늘어놓은 뒤, 가장 앞에 있는 View의 Visibility를 INVISIBLE로 설정해도 공간은 차..

SharedPreferences (안드로이드)

SharedPreferences? SharedPreferences는 안드로이드에서 사용할 수 있는 내부 데이터 저장소이다. 개발 진행시 앱의 데이터들을 저장하고, 이들을 관리해야 하는 경우가 있을 수 있는데 이런 경우 중요하거나 많은 양의 데이터는 DB 또는 서버에 저장하는 방법을 사용할 수 있다. 하지만 간단한 데이터, 설정값 등을 DB를 상요해서 저장하기에는 애매하다고 생각할 수 있다. 이런 때를 위해서 안드로이드에선 SharedPreferences를 사용할 수 있다. SharedPreferences는 데이터를 파일로 저장하는데, 해당 파일은 앱 폴더 내부에 저장되기 때문에 앱을 삭제하면 당연하게도 이 데이터는 같이 삭제된다. (파일 형식은 XML) SharedPreferences는 데이터를 Key:..

LayoutInflater(안드로이드)

LayoutInflater? LayoutInfalter는 안드로이드에서 View를 만드는 방법 중 하나로, XML에 정의해둔 Recource들을 View형태로 반환해주는 역할을 한다. 즉, XML에 미리 정의해둔 틀을 실제 메모리에 올려주는 역할을 한다. 우리가 처음 프로젝트를 생성하고 가장 먼저 생기는 MainActivity.java파일에서 onCreate에 자동적으로 추가되는 setContentView(R.layout.activity_main)도 내부에서 LayoutInfalter가 실행되어 View들을 객체화하는 것이다. DataBinding또는 ViewBinding을 사용하면, LayoutInflater를 사용해서 View를 생성하는데, 실제 코드에선 아래와 같이 생성할 수 있다. class Ma..

반응형