리사이클러뷰에서는 기존에 스크롤 이벤트를 관리할 때 setOnScrollListener를 이용해서 OnScrollListener객체를 집어넣어서 해당 로직을 구현하였습니다. package androidx.recyclerview.widget; //Set a listener that will be notified of any changes in scroll state or position //스크롤 상태나 위치의 변경 사항에 대해 알림을 받을 리스너를 설정합니다. @Deprecated public void setOnScrollListener(@Nullable OnScrollListener listener) { mScrollListener = listener; } 그러나 이방식은 스크롤 동작에 따라 여러 개의..
오늘은 알림(Notificatio)을 알아볼까 합니다 알림은 사용자에게 미리 알림을 주고 다른 사람과의 소통을 가능하게 하며 앱에서 보내는 기타 정보를 적시에 제공하기 위해 Android가 앱의 UI 외부에 표시하는 메시지입니다. 사용자는 알림을 탭 하여 앱을 열거나 알림에서 바로 특정 작업을 실행할 수 있습니다. 공식 안드로이드 docs를 보면 알림을 이렇게 설명하고 있습니다. 알림은 여러 방식으로 사용자에게 여러 정보들을 표시하거나 동작(event)들을 수행할 수 있게 해 줍니다. 기존에 안드로이드에서는 알림 채널을 따로 만들어 줄 필요 없이 알림을 구현할 수 있었지만 안드로이드 API26 오레오 버전부터는 따로 Notification Channel을 추가를 해줘야 합니다. 이처럼 Notificati..
뷰바인딩을 쓰는 이유 안드로이드 코드에서 xml에 있는 UI에 접근을 하기 위해서는 FindViewById를 이용합니다. @SuppressWarnings("TypeParameterUnusedInFormals") @Override public T findViewById(@IdRes int id) { return getDelegate().findViewById(id); } //ex) val button : Button = findViewById(R.id.button) 이 방법도 나쁘지는 않지만 일일이 findViewById() 함수로 하나하나 찾아서 가져와야 한다는 애로사항이 있었습니다. 3.5 버전까지는 개발자들이 findViewById를 사용했었지만, Butter knife라는 라이브러리나 extensi..
안드로이드로 앱을 개발하다 보면 여러 어댑터를 만나게 됩니다. 어댑터(영어: adapter, adaptor)는 다른 전기나 기계 장치를 서로 연결해서 작동할 수 있도록 만들어 주는 결합 도구를 뜻합니다. 안드로이드에서 이러한 어댑터들은 리스트뷰나 ViewPager같이 연속된 객체들을 보여줄 때 어떻게 연결한 것인지에 대해서 설정할 수 있습니다. 오늘은 리사이클러뷰의 어댑터들에 대에서 포스팅을 해볼까 합니다. 리사이클러뷰(RecyclerView)는 여러 객체들을 아이템 단위로 구성하여 화면에 출력하는 뷰그룹이며, 한 화면에 표시되기 힘든 많은 수의 데이터를 스크롤 가능한 리스로 표시해 주는 위젯입니다. 그렇다면 이게 리스트 뷰랑 다른 점이 뭐가 다르냐고 말할 수 있습니다. 리사이클러뷰는 이 리스트뷰의 상위..
기존에는 startActivityForResult를 이용하여 액티비티 이동시 Result값을 받아오겠다는 것을 알려주고 onActivityResult()를 이용하여 값을 액티비티의 이동후 다 원래 액티비티로 돌아왔을 때 Result로 받아온 값들을 이용할 수 있었습니다. 그렇지만 최근에 와서는 이렇게 startActivityForResult가 deprecated 되면서 안드로이드 자체에서 쓰는 것을 권유하지 않습니다. 역시 같이 쓰이던 onActivityResult() 또한 deprecated 되었습니다. Deprecated : 이 메서드는 ActivityResultContract 및 androidx.activity.result.contract.ActivityResultContracts에서 사용할 수 있..
Context => 애플리케이션(객체)의 현재 상태의 맥락(context) https://developer.android.com/reference/android/content/Context Context | Android Developers android.net.wifi.hotspot2.omadm developer.android.com 응용 프로그램 환경에 대한 전역 정보(global information)를 지니고 있는 인터페이스입니다 => 액티비티와 애플리케이션에 대한 정보를 얻기 위해서사용가능합니다 액티비티 객체는 컨텍스트 객체를 상속받습니다 => 액티비티는 애플리케이션의 context를 통하여 특정 리소스와 클래스, 그리고 애플리케이션 환경에 대한 정보에 대해 접근할 수 있게 해줍니다. 안드로이드..
토스트(toast)는 화면 아래쪽에 잠깐 보였다가 사라지는 문자열 다이얼로그를 말합니다. Added in API level 1이기 때문에 따로 호완성을 걱정할 필요는 없습니다만 토스트의 몇몇 함수 들은 Deprecated in API level 30 되었기 때문에 사용 시 주의가 필요합니다. 평상시 토스트는 다른 언어의 alert나 Log, print함수같이 변수나 상황 등을 출력하고 싶을 때 안드로이드 환경에서 사용할 수 있습니다. 토스트는 android.widget.Toast안에있어 사용 시 임포트 해줘야 합니다. 토스트는 Toast의 함수인 makeText() 함수로 만듭니다. 자바(Java) ver // 토스트 메시지 표시 Context context = getApplicationContext()..
인텐트 엑스트라 데이터 인텐트에 컴포넌트 실행을 요청할 때 데이터를 함께 전달하려면 엑스트라 데이터를 이용 해야 합니다. 엑스트라 데이터는 인텐트에 담는 부가 정보라 할 수 있습니다. 인텐트에 엑스트라 데이터를 추가하는 함수는 putExtra()입니다. public intent : Intent putExtra(String name,CharSequence value) putExtra 함수의 첫 번째 매개변수는 데이터의 식별자이며 두 번째 매개변수가 전달할 데이터입니다. putExtra() 함수는 각 타입의 데이터를 담을 수 있도록 오버 로딩으로 선언되어 있습니다. 엑스트라 데이터 추가 val intent : Intent = Intent(this,DetailActivity::class.Java) intent..
인텐트 이해하기 인텐트란? 안드로이드 앱은 모두 4개의 컴포넌트로 개발하는데 이때 핵심 클래스가 바로 Intent입니다. 인텐트는 한마디로 ‘컴포넌트를 실행하려고 시스템에 전달하는 메시지’라고 정의할 수 있습니다. 즉, 기능을 수행하는 함수를 제공하는 클래스가 아니라 데이터를 담는 클래스입니다. 이 데이터는 컴포넌트를 실행하는 정보이며 이 정보가 담긴 인텐트 객체를 시스템에 전달하면 컴포넌트가 실행됩니다. 전환되는 액티비티가 안드로이드의 컴포넌트 클래스라면 개발자가 코드에서 직접 생성해서 실행할 수 없습니다. 컴포넌트 클래스는 시스템이 생성해서 실행하는 클래스이므로 개발자가 작성하는 코드로 생명주기를 관리할 수 없습니다. 결국 전환 시키려면 시스템에서 인텐트의 정보를 분석해서 그에 맞는 컴포넌트를 실행해..
확장된 플로팅 액션 버튼 확장된 플로팅 액션 버튼은 화면에 떠있는 듯한 버튼을 제공하는 뷰입니다. 머터리얼 라이브러리가 처음 나왔을 때는 플로팅 액션 버튼을 제공했지만, 지금은 버튼에 문자열까지 출력할 수 있는 확장된 플로팅 액션 버튼도 제공 합니다. 확장된 플로팅 액션 버튼 확장된 플로팅 액션 버튼의 icon 속성으로 이미지를 지정하면 이 이미지를 포함해 화면에 떠 있는 듯한 버튼이 출력됩니다. 그리고 text 속성으로 문자열을 지정하면 이미지와 함께 출력됩니다. 만약 text속성을 지정하지 않고 icon 속성만 지정하면 둥근 모양으로 나옵니다. 그리고 코드에서 문자열까지 나오게 확장하거나 아이콘만 나오게 축소하는 등 버튼의 출력 형태를 조절할 수 있습니다. 확장된 플로팅 액션 버튼 조절 binding..