반응형

안드로이드 21

안드로이드 버튼 클릭 시 퍼지는 effct주기(Ripple Effect)

안드로이드에선 기본적으로 버튼을 추가하면 클릭 시 해당 부분부터 퍼지는 이펙트가 내장되어있다. 하지만 버튼에 색상을 넣기 위해 background를 설정하면 이러한 이펙트가 사라지게 된다. 그래서 이번 글에선 이러한 퍼지는 이펙트를 직접 custom하여 버튼에 추가하는 방법을 알아보자. 일단 res/drawable폴더에 원하는 이름의 xml파일을하나 생성한다. 여기선 btn_effect.xml이라는 파일을 생성하도록 하겠다. 위와 같이 추가하고, 이를 적용시킬 버튼에 background로 설정해주도록 한다. . . 생략 . . . . 생략 . . 위에선 검은 배경에 회색 이펙트를 주어서 잘 안보이는데, 직접 색을 바꿔서 해보는걸 추천한다.

Geocoder를 사용해 주소를 좌표로 변경하는 방법(안드로이드, Koltin)

안드로이드에서 위치를 사용해 무언가 작업을 하려고 할 때 좌표를 주소로 바꾸는 경우도 필요하지만, 반대로 주소를 좌표로 바꾸는 경우도 필요하다. 이번 글에선 후자의 작업을 Geocoder를 사용해서 해결하는 법을 알아보도록 하자. private fun searchAddress(address: String){ lateinit var list: MutableList try{ list = Geocoder(context).getFromLocationName(addr, 5) }catch(e: IOException){ e.printStackTrace() Toast.makeText(context, "Error", Toast.LENGTH_SHORT).show() } if(list.size == 0){ Toast.mak..

안드로이드 AudioManager로 볼륨 조절(Kotlin)

이번 글에선 안드로이드에서 AudioManager를 사용해 볼륨을 조절하는 법에 대해 알아보도록 하자. 권한 요청 해당 기능을 사용하기 위해선 방해금지 권한이 필요하다. android.permission.ACCESS_NOTIFICATION_POLICY 먼저, Manifest파일에 위와 같은 코드를 추가해주고 사용자에게 권한을 요청해야 하는데, 여기서 다른 권한들과 요청하는 방법이 조금 다르다. val notificationManager = this.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager if(Build.VERSION.SDK_INT >= 23){ if(!notificationManager.isNotificationPoli..

안드로이드 Geofence(지오펜스)

이번 글에서는 안드로이드의 Geofence를 사용하는법에 대해 알아보도록 하자. Geofence에서 fence는 담, 울타리 등을 의미하는데, 스마트폰의 GPS위치를 기반으로 장소와 범위를 지정하여 울타리를 만들고, 울타리 내에 들어가거나 나올때에 이벤트를 동작시키는 기능이다. Geofence는 BroadCastReceiver를 사용하여 백그라운드에서 동작한다. 때문에 앱을 실행중이지 않을 때에도 이벤트가 발생하면 정해진 동작을 수행한다. 이제 실제로 Geofence를 사용하는 법에 대해서 알아보도록 하자. Defendency Geofence를 등록하기 위해선 gradle파일에 의존성을 추가해주어야 한다. dependencies { ... implementation 'com.google.android.g..

안드로이드 데이터베이스 SQLite(Koltin)

많은 양의 데이터를 관리하려면 데이터베이스는 필수라고 할 수 있다. 데이터베이스에도 종류는 여러가지지만, 이 글에선 안드로이드에서 기본적으로 사용가능한 SQLite를 사용해보자. DB생성 가장 먼저 DBHelper.kt파일을 생성하여 아래와같이 작성해준다. class DBHelper( context: Context?, name: String?, factory: SQLiteDatabase.CursorFactory?, version: Int ): SQLiteOpenHelper(context, name, factory, version){ override fun onCreate(db: SQLiteDatabase) { var sql: String = "CREATE TABLE if not exists animals..

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

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

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

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

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..

반응형