본문 바로가기

Android/공부

(23)
onNewIntent 개념 및 사용법 1. 개요 startActivity() 나 startActivityForResult() 메서드를 호출하면 액티비티 화면을 띄울 수 있습니다. 그런데 동일한 액티비티를 계속 위의 메서드로 호출하게 되면 동일한 액티비티가 메모리에 여러 개 만들어질 것입니다. 이를 방지하기 위해서 Flag(플래그)를 사용할 수 있습니다. 플래그를 사용하면 동일한 액티비티가 계속해서 생성되지 않고 하나의 액티비티만 존재하게 할 수 있습니다. 2. 생명주기 다른 액티비티에서 이미 생성된 액티비티를 호출하면 onNewIntent() → onResume() 메서드 순서로 호출됩니다. 그런데 만일 동일한 액티비티에서 동일한 액티비티를 호출하면 onPause() → onNewIntent() → onResume() 메서드 순서로 호출됩니..
툴바(Toolbar) 내부 텍스트뷰(TextView) 문자열 가운데로 배치하는 법 안녕하세요? 닉네임간편입니다. 이번 시간에는 툴바 내부에 텍스트뷰의 문자열을 가운데로 배치하는 법에 대해서 설명드리겠습니다. 1. 문제 툴바에 문자열을 배치할 때 기본 title을 사용하지 않고 텍스트뷰를 사용하는 경우가 있습니다. 그런데 문자열을 가운데에 배치하려고 layout_gravity 속성을 설정하여도 가운데에 배치가 되지 않는 경우가 있습니다. 2. 해결 방법 이때 contentInsetStart 또는 contentInsetLeft을 0dp로 설정하면 중앙에 가깝게 배치할 수 있습니다. 툴바 내부에선 Navigation 버튼이나 메뉴 아이템들이 배치될 수 있고, 이것들이 기본적으로 차지할 만한 최소한의 공간을 미리 설정합니다. 이 값은 default로 16dp이며, 따라서 기본적으로 툴바 내부..
SharedPreferences 개념 및 사용법 1. 정의 간단한 데이터의 저장을 목적으로 사용합니다. SharedPreferences는 내부 저장소를 이용하기 때문에 권한 설정이 필요 없고 간단한 코드로 사용할 수 있습니다. (이때 꼭 뒤에 s를 붙여야 합니다. SharedPreference's') 주로 로그인 정보나 앱의 상태 정보를 저장하는 용도로 사용되며, 액티비티에서 인텐트에 값을 넣고 빼는 것과 비슷한 형태로 동작합니다. 2. 사용법 1) Editor로 데이터 저장하기 fun setSharedData(name: String, key: String, data: Int) { var pref: SharedPreferences = getSharedPreferences(name, Activity.MODE_PRIVATE) var editor: Shar..
ListView와 RecyclerView의 차이점 안녕하세요? 닉네임간편입니다. 앱을 개발하면서 화면에 아이템을 나열하여 보여야 할 때가 많은데요, 그럴 때 유용하게 사용하는 것이 바로 리스트뷰(ListView)와 리싸이클러뷰(RecyclerView)입니다. 둘의 기능이 유사하다 보니 한 요소만 사용하거나 혹은 두 요소를 혼동해서 사용하는 경우도 있었는데요, 이번 시간에는 이 둘의 차이점에 대해서 자세히 다루어보겠습니다. 1. 책임(Responsibility) 여기서 '책임'이라는 말은 어떤 기능을 구현함에 있어서 주요한 역할을 한다는 것을 의미합니다. 리스트뷰는 해당 클래스 내부에서 자체적으로 많은 것들을 설정할 수 있습니다. 따라서 리스트뷰는 해당 클래스가 모든 '책임'을 갖고 있다고 볼 수 있습니다. 반대로 리싸이클러뷰는 해당 클래스 자체에서 많은..
안드로이드 화면 전환 애니메이션(+ 화면에 보이는지 여부에 따라 애니메이션 다르게 설정) 안녕하세요? 닉네임간편입니다. 이번 시간에는 화면 전환 애니메이션에 대해서 알아보겠습니다. 화면을 전환할 때 사용되는 애니메이션은 정말 다양하지만, 전 그중에서도 '공유 요소'를 활용하여 화면을 전환하는 애니메이션에 대해 다루겠습니다. 다음 이미지와 같이 이전 화면의 이미지뷰가 전환되는 화면과 '공유'하여 마치 연속되는 것처럼 화면이 전환되는 애니메이션을 구현할 것입니다. 1. 화면 전환하기 전 화면 처리 화면 전환 애니메이션을 만들려면 먼저 화면을 전환하기 이전 화면에서 처리해야 하는 부분이 있습니다. 전체 코드는 아래와 같습니다. val intent = Intent(this@SearchBeerActivity, BeerSpecificActivity::class.java) intent.putExtra(B..
에디트텍스트(EditText) 관련 짜투리 지식 2 (한 줄로 입력받기, 엔터키 이벤트, 키보드 사라지게 만들기) 1. 한 줄로 입력받기 xml 파일에서 maxLines 속성을 1로 설정하면 한 줄로 입력받을 수 있습니다. 이때 inputType을 반드시 명시해주어야만 제대로 동작합니다. 예를 들어 inputType을 text로 설정해주면 됩니다. 2. 키보드 사라지게 만들기 val inputMethodManager: InputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager // 키보드 사라지게 하는 코드 inputMethodManager.hideSoftInputFromWindow(currentFocus!!.windowToken, 0) inputMethodManager를 먼저 생성한 후, 이를 사용해서 키보드를 사..
AnimationDrawable 사용해서 애니메이션 만들기 1. 개요 화면에 애니메이션을 표현하는 경우가 종종 있습니다. 이 경우 AnimationDrawable을 사용하면 보다 쉽게 애니메이션을 화면에 표시할 수 있습니다. 2. 사용법 1) 이미지 만들기 먼저 화면에 사용할 이미지를 설정합니다. 저는 간편하게 아래 이미지를 사용했습니다. 2) 애니메이션 파일 만들기 drawble 폴더에 animation-list 파일을 만듭니다. 코드는 다음과 같습니다. 이때 oneshot 속성은 연속 재생 여부입니다. true로 설정하면 한 번만 애니메이션을 실행한 다음 멈춰있고, false로 설정하면 해당 애니메이션을 반복해서 재생합니다. 그리고 각 아이템을 만들어줍니다. 이때 하나의 아이템은 애니메이션에서 하나의 프레임이 됩니다. 각 속성은 다음과 같습니다. a. dra..
Databinding에 대해서 1. 개요 데이터와 뷰를 연결하는 작업을 레이아웃에서 처리하는 기술을 데이터바인딩이라고 부릅니다. 뷰 바인딩을 포함하는 개념이지만, 뷰 바인딩이 상대적으로 간단하며 퍼포먼스 효율이 좋고 용량이 절약된다는 이점이 있습니다. 따라서 단순히 findViewById를 대체하기 위해서라면 뷰 바인딩을 사용하는 것을 구글이 권장하고 있습니다. 2. 사용법 1) 레이아웃 먼저 바인딩할 레이아웃을 만들어줍니다. 이때 최상위 태그는 이어야 하며, 그렇지 않을 경우 에러가 발생합니다. 아래 코드처럼 layout 태그가 전체 레이아웃을 포괄해야 합니다. ... ... 2) build.gradle(app) 파일 build.gradle(app) 파일의 android 블록 안에 다음과 같은 코드를 추가합니다. buildFeatu..

728x90
반응형