안드로이드 앱 개발 공부48 [Android] viewpager 간단하게 indicator 만들기 JAVA viewpager를 만들어서 이미지나 어떠한 뷰를 보여줄 때 해당 뷰가 몇 번째인지 보여주는 indicator가 있다.주로 잘만들어져 있는 외부 라이브러리를 가져와서 사용할 수 있지만 아주 간단하게 구현할 수 있는 방법이 있다. 아래에서 설명할 이 방법은 처음 커스텀 뷰를 만들 때 접근해본 방식이다. 처음에 커스텀 뷰를 만들어야 할 때 어떤방식으로 코드를 짜야하는지 막막하기만 했는데, 온갖 방법들을 서치하고 알아보면서 여러 가지 코드를 작성해 보고 수정해 본 결과 간단하게 만들 수 있는 코드를 짤 수 있었다. 어떤 식으로 코드를 구성해야 할 지 초보자에게 조금은 도움이 될 수 있을 것이다. ( 이 글에서 뷰페이저는 만드는 방법은 스킵하겠다. )indicator를 만들 수 있는 간단한 방법을 글로 .. 안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법 2024. 10. 1. [Android] 버튼+ 홈 키 사용해서 비디오 pip 구현 _ kotlin 코틀린 ott앱을 사용하다 보면 PIP기능으로 자주 사용한다. 그래서 항상 사용하면서 어떻게 구현하는 것인지 궁금했다. 그래서 한번 해봤다. 내가 구현해 보길 원하는 방법은 재생되는 영상을 보다가 PIP를 사용할 수 있는 것이다. 1. 영상이 재생 중이어야 한다. 2-1. 티빙 앱처럼 버튼을 눌러서 pip모드로 진입한다. 2-2. 넷플릭스나 웨이브 앱처럼 홈키를 눌러서 pip모드로 진입한다. 이 세가지를 만족할 수 있도록 만들고 싶었다. 1. 영상 재생 링크를 타고 영상을 가지고 올 수 있는 방법도 있지만 저장되어 있는 비디오를 가져오는 방법을 선택했다. 그러려면 처음으로는 영상을 가져와야 했다. 픽사베이에서 무료 영상을 다운을 받았다. 이 영상을 보여줄 수 있는 비디오뷰를 xml에 넣어주는 것이 가장 먼저 해.. 안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법 2023. 10. 16. [Android] 타이머 구현 _ NumberPicker + Timer Kotlin 코틀린 완성 화면 완성한 기능의 화면 일부이다. 기본 타이머를 사용을 하면서 한 번쯤 타이머를 만들어 보고 싶었다. 타이머 기능 외에도 부가적인 기능을 추가하느라 조금 시간이 걸렸지만 기본적인 기능은 완성이 된 상태이다. 타이머 자체를 구현하는 것은 간단한 일이었다. 타이머를 위한 시간을 설정하는 부분에서는 numberPicker를 사용하였고 start 버튼을 누르면 텍스트뷰를 1초마다 변경해 주도록 하면 된다. 그다음 시분초의 값 모두가 0이 되면 타이머가 종료되도록 하였다. 이 글에서는 타이머를 시작하고 종료하는 부분만 언급한다. 개인적으로 진행중이 타이머 앱의 일부 기능을 작성. 1. 타이머 시간 설정 화면(xml) xml에 numberPicker와 시작 버튼을 추가해 준다. 데이터바인딩을 사용해 주기 위.. 안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법 2023. 10. 14. [안드로이드] 데이터바인딩 databinding 기본 코틀린 데이터바인딩을 사용하는 아주 기본적인 방법을 작성해보려고 한다. 버튼을 누르면 textView의 숫자가 증가하는 아주 간단한 작동을 데이터바인딩을 사용해서 구현할 것이다. 데이터바인딩을 사용하기 위해서는 첫 번째로 build.gradle(:app)에 데이터 바인딩을 사용하기 위한 설정을 해주어야 한다. 1. build.gradle(:app) android { ... buildFeatures { dataBinding true } } 위 코드를 추가해 주는 것이 가장 먼저 해야 할 일이다. 두 번째로는 데이터바인딩에 필요한 data class를 작성해 주는 일이다. 2. Data class data class Profile( var age : Int ) 원하는 이름의 데이터 클래스를 원하는 변수를 포함하여 .. 안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법 2023. 8. 17. [안드로이드] string.xml을 통해 다국어 설정 앱을 여러 국가를 상대로 출시할 경우 여러 가지 언어를 설정해줘야 할 때가 있다. string.xml을 사용해서 설정해 줄 수 있다. 아주 간단하다. string.xml string.xml에 처음 들어가면 app_name만 지정되어 있다. 여기에 보통 우리가 사용할 문자를 저장해서 사용한다. 그런데 여기서 살짝 시선을 우측상단으로 옮기면 파란 글씨의 open Editor가 보일 것이다. 이걸 클릭하면 된다. 그러면 아래와 같은 화면을 보게 될 것이다. 내용은 좀 다를 것이다. 나는 이전에 추가한 내용이 있다. 여기서 이번에는 좌측 상단에 지구본에 초록색 더하기 문양을 클릭하게 되면 다양한 언어목록을 확인할 수 있다. 이곳에서 필요한 언어를 선택해서 추가해 주면 된다. 나는 korea(ko) in Sout.. 안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법 2023. 8. 7. [안드로이드] intent를 사용한 Activity 전환 Kotlin 코틀린 intent는 컴포넌트를 호출하거나 데이터를 담아서 보내는 메시징 객체이다. 1. activity 호출 intent를 사용하여 activity 전환하는 방법 아주 간단한다. 우선, 기본 activity와 이동할 activity가 있다는 전재하에 아래 코드면 끝난다. val intent = Intent(this, theotherActivity::class.java) startActivity(intent) * 만약 이 과정에서 오류가 발생한다면 manifest에 activity가 선언되어 있지 않은지 확인해 보자. 2. 데이터 담아서 보내기 만약 기존 activity에서 다음 activity에 데이터를 보내고 싶다면 intent.putExtra("transResult",true) 이런 식으로 activity.. 안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법 2023. 8. 6. [Android] App widget 만들기 _ configureActivity + recyclerview 이전에 jetpack compose로 만든 앱에 위젯 추가 기능을 추가하려고 했는데, 아직 jetpack compose로는 이전처럼 모든 기능을 구현할 수 없다는 글을 보고 열심히 분석하며 만들어 보려고 했던 것을 포기했었다. 그래서 기존방법으로 다시 만들어 보았다. 이 앱은 jetpack compose를 한번 사용해 보고 싶어서 간단한 앱을 목표로 시작했고 플레이 스토어에 업로드까지 하게 되었다. 이 앱은 투두, 메모, 디데이를 하나의 앱에서 간단하게 관리할 수 있는 앱이다. 그래서 homescreen 위젯을 추가해서 볼 수 있었으면 했다. 내가 구현하려는 기능은 위젯을 추가하여 사용자가 저장해 두었던 디데이를 Room Db에서 가져와 RecyclerView를 통해 리스트로 보여주고 그 중 원하는 아이.. 안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법 2023. 4. 27. [Android] Api키 숨기기 안될 때 기존에 사용하던 local.properties에 api키를 작성하고 app수준 gradle에서 키를 등록해 주고 buildConfig로 가져와서 사용하는 방식을 썼었다. 그런데 언젠가부터 getProperty 해서 키를 가져다가 manifest에서 사용하도록 했던 방법이 되지 않아서 임시방편으로 string파일에 저장해서 사용하고 있었다. 이 방법은 키를 숨겨서 사용할 수 없었고, 깜빡하고 깃에 push 하는 순간 무방비로 노출되어 버렸다. 근데 해결방법을 모르니 어쩔 수 없이 번거롭게 지워서 올리고 다시 작성하고 했었는데 아주 쉽게 키를 숨길 수 있는 방법을 알아냈다! 1. local.properties에 자신의 api키를 작성을 해준다. admob_app_id ="" admob_id ="" 2. 프로.. 안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법 2023. 4. 24. [Android] Kotlin 리사이클러뷰 스크롤 끝까지 내려갔을 때 안드로이드의 Paging은 많은 데이터를 한 번에 가져오지 않고 일정한 크기만큼 나눠서 가져오는 것이다. 이번에는 paging 라이브러리를 사용하는 것이 아니라, 많지 않은 데이터를 가져올 때 간단하게 페이징 처리하는 기능을 구현하는 것을 기록해보려 한다. 예전에는 웹페이지 처럼 다음 페이지 번호를 눌러서 넘어가도록 구현을 해본 적이 있었는데, 그 방법과 유사하지만 간단하다. 리사이클러뷰 어댑터나 레트로핏 데이터 가져오는 건 건너뛰고 핵심인 스크롤을 내려서 최하단에 내려갔을 때 이를 감지하고 원하는 동작을 할 수 있도록 하면 된다. binding.searchRecyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() { overrid.. 안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법 2023. 4. 21. [Android] 코틀린Kotlin 현재 날짜 가져오기 LocalDateTime 혹은 LocalDate val localDateTime: LocalDateTime = LocalDateTime.now() val localDate: LocalDate = LocalDate.now() Log.d("localDateTime",localDateTime.toString()) Log.d("localDate",localDate.toString()) 이렇게 하면 로그에 아래처럼 찍힌다. localDateTime 2023-04-03T 05:08:43.775 localDate 2023-04-03 LocalDateTime을 가지고 이렇게 시간과 날짜를 각각 가져올 수도 있다. Log.d("localDateTime",localDateTime.toLocalDate().toString(.. 안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법 2023. 4. 3. [Android] kotlin 뷰바인딩 ViewBinding 1. build gradle (Module:app)에 추가하기 android { ... viewBinding { enabled true } } 2. 사용하려는 뷰에서 접근 두 가지 방법이 있다. 첫 번째는 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val binding = ActivityMainBinding.inflate(layoutInflater); setContentView(binding.root) } } 두 번째는 class MainActivity : AppCompatActivity() { val binding.. 안드로이드 앱 개발 공부/자꾸 까먹어서 적어두는 구현방법 2023. 4. 3. 도통 모르겠어서 기록하면서 공부하는 Jetpack Compose_ glance 코드 샘플 분석 후 적용하기까지 (2) 이번에는 https://github.com/android/user-interface-samples/tree/main/AppWidget/app/src/main/java/com/example/android/appwidget/glance/image 여기 코드를 분석해 볼 것이다! 이렇게 이미지를 사이즈에 따라 갱신하도록 구현한 것이다. 고정되지 않은 데이터를 보여주는 것이 아니기 때문에 내가 원하는 방법을 구현하는 것에 감이 올 수 도 있을 것 같아서 분석해 본다. 이거는 두 개의 파일이 있는데 ImageGlanceWidget.kt는 위젯 ui 전방에 관련된 코드이고, ImageWorker.kt는 이미지를 가져오는 코드로 추정된다. ImageGlanceWidget.kt에는 3덩어리로 이루어져 있다. 1. cl.. 안드로이드 앱 개발 공부/jetpack Compose 2023. 3. 21. 이전 1 2 3 4 다음