반응형

분류 전체보기 199

[Android] Number Picker

이번 글에서는 안드로이드에서 숫자를 고를 때 활용하면 좋은 Number Picker를 사용해보자. XML MainActivity class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) binding.pickerYear.apply { maxValue = Calendar.getInstance().g..

안드로이드 BottomNavigationView

이번 글에서는 안드로이드 BottomNavigationView를 사용해서 화면을 전환하는 법에 대해 알아보자. Menu 가장 먼저 BottomNavigationView에 들어갈 메뉴들을 정의해보도록 하자. res에서 menu폴더를 생성해준 뒤, 해당 폴더 안에 xml파일을 작성한다. 이 글에선 3개의 아이템을 가진 menu파일을 작성해보았다. id를 통해서 해당 메뉴에 접근할 수 있고, title과 icon은 BottomNavigationView에서 보이는 제목과 아이콘을 지정할 수 있다. MainActivity.xml 다음으로 MainActivity를 작성해보도록 할텐데, 이 글에선 BottomNavigationView와 화면(Fragment)이 들어갈 container를 가지고 있는 뷰를 만들어보도록..

Deep Copy(깊은 복사)와 Shallow Copy(얕은 복사)

이번 글에서는 Deep Copy와 Shallow Copy에 대해서 알아보도록 하자. 데이터 우리가 프로그래밍 중 사용하는 데이터는 크게 두 가지 타입으로 분류할 수 있다. Value Type Reference Type 이 둘의 차이는 데이터를 메모리에 어떻게 저장하느냐에 따라 나뉘게 된다. 프로그램에서 사용하는 메모리 영역 중 힙(Heap)영역과 스택(Stack)영역이 있는데, Value Type의 경우 값을 Stack영역에 저장하고, Reference Type의 경우 실제 데이터는 Stack에 저장한 뒤 해당 메모리의 주소값을 Stack영역에 저장하여 이를 통해 데이터를 불러오게 된다. C언어를 배우신 분들은 포인터에 대해 아실테니 위와 같은 개념을 좀 더 잘 알고 계시리라고 생각한다. Deep Cop..

안드로이드 데이터베이스(Database) Room 사용하기

이번 글에선 안드로이드 로컬 DB인 Room을 사용하는 방법에 대해서 알아보도록 하자. ROOM 안드로이드를 사용하다보면 데이터를 로컬에 저장해서 사용해야 할 때가 있다. 이런 때를 위해서 안드로이드에서는 로컬에 데이터를 저장할 수 있는 DB를 지원하고 있다. 예전에는 SQLite를 사용했었는데, 최근에는 안드로이드 문서에서도 Room사용을 적극 권장하고 있다. Room을 사용하기 위해선 기본적으로 세 가지가 필요한데, Entity Dao Database 위 세 가지를 각각 정의해주어야 Room사용이 가능하다. 일단 Room을 사용하기 위해서 dependencies를 추가해주어야 하는데, 안드로이드 스튜디오 Gradle에서 아래 코드를 넣어주자 def room_version = "2.5.0" implem..

안드로이드 리사이클러뷰(RecyclerView) 사용하기

영어 한국어 일본어 중국어 (간체) 중국어 (번체) 베트남어 인도네시아어 태국어 독일어 러시아어 스페인어 이탈리아어 프강스어 복사하기 이 확장을 지원합니다 ㅇ 이번 글에서는 RecyclerView를 사용하는 방법에 대해서 알아보도록 하자. RecyclerView 안드로이드에서 어떤 항목들의 리스트를 보여줄 때에는 ListVIew와 RecyclerView를 사용할 수 있다. 둘의 차이점에 대해서는 아래 링크에서 확인해 볼 수 있다. https://angangmoddi.tistory.com/287 리스트뷰(List View) vs 리사이클러뷰(Recycler View) 안드로이드에서 목록을 표시하는 View로는 리스트뷰와 리사이클러뷰 두 가지가 있다. 이 글에선 두 View가 어떻게 다른지에 대해서 알아보도..

안드로이드 RecyclerView 아이템 줌하기(SanpHelper, ScrollListener)

이번 글에서는 RecyclerVIew에서 현재 화면 가운데에 있는 아이템을 강조하는 법에 대해서 알아보도록 하자. 영어 한국어 일본어 중국어 (간체) 중국어 (번체) 베트남어 인도네시아어 태국어 독일어 러시아어 스페인어 이탈리아어 프강스어 복사하기 이 확장을 지원합니다 Adapter, ViewHolder, itemXml 일단 먼저 RecyclerView를 표시하기 위해서 Adapter와 ViewHolder, itemXml을 정의해주도록 하자. class RecyclerAdapter( private val itemList: ArrayList, private val onClickItem: (String) -> Unit ): Adapter() { override fun onCreateViewHolder(par..

안드로이드 Circle Progress (로딩 애니메이션) 만들기

영어 한국어 일본어 중국어 (간체) 중국어 (번체) 베트남어 인도네시아어 태국어 독일어 러시아어 스페인어 이탈리아어 프강스어 복사하기 이 확장을 지원합니안드로이드 안드로이드에서 네트워크 통신을 하거나 데이터를 처리하는 동안 사용자에게 아무 화면도 보여주지 않으면 혼동을 줄 수 있다. 때문에 이 글에서는 위와 같은 상황에 사용할 수 있는 간단한 애니메이션을 만들어보도록 하자. Drawable 작성 로딩 애니메이션은 gif, lottie등을 활용할 수도 있지만 이번 글에선 rotate drawable을 사용해서 만들어보도록 하자. rotate로 이미지를 회전하도록 해주고 gradient값을 주어서 자연스럽게 두 가지 색이 섞이도록 해보자. Dialog Fragment 그 다음으로 앱의 여러 군데에서 사용하기..

안드로이드 뒤로 가기 두 번 눌러서 종료 (onBackPressed, onBackPressedDispater)

영어 한국어 일본어 중국어 (간체) 중국어 (번체) 베트남어 인도네시아어 태국어 독일어 러시아어 스페인어 이탈리아어 프강스어 복사하기 이 확장을 지원합니다 이번 글에선 기기의 뒤로 가기 버튼을 두 번 눌러서 화면을 종료하는 방법에 대해서 알아보도록 하자. OnBackPressed 여기서 활용할 함수는 onBackPressed함수인데, 기기의 뒤로가기 버튼을 누르면 호출된다. private var backPressedTime: Long = 0L override fun onBackPressed() { if (System.currentTimeMillis() - backPressedTime

안드로이드 ViewPager2 + TabLayout를 사용한 스와이프 메뉴

이번 글에서는 ViewPager2와 TabLayout을 사용하여 스와이프 가능한 탭 메뉴를 만들어보도록 하자. XML파일 작성 먼저 viewpager와 tabLayout이 있는 메인 액티비티의 XML파일을 작성해주도록 하자. 간단하게 viewpager와 tabLayout만 있는 XML을 작성해보았다. Adapter 다음으로 viewpager에 연결할 adapter클래스를 새로 작성한다. class ViewPagerAdapter( private val fragmentList: ArrayList, container: AppCompatActivity ): FragmentStateAdapter(container.supportFragmentManager, container.lifecycle) { override ..

반응형