Android15 [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. [안드로이드] 데이터바인딩 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. [안드로이드] 기초적인 webView 구현하기 코틀린 kotlin 1. xml에 webView 추가 자신이 원하는 액티비티에 webview를 추가해 주었다. 2. Asset추가 그러면 아래처럼 asset폴더가 생성된다. 여기에 html파일을 추가해 준다. html을 간단하게 작성해 주었다. 그리고 해당 액티비티에서 binding.webView.loadUrl("file:///android_asset/test1.html") 이렇게 html파일을 가져와 주면 아래 결과를 얻을 수 있다. 전체 코드 class WebviewActivity : AppCompatActivity() { private val binding by lazy { ActivityWebviewBinding.inflate(layoutInflater) } override fun onCreate(savedInsta.. 카테고리 없음 2023. 8. 8. [Android] 코틀린 kotlin 다이얼로그 만들기 기본 버튼을 눌렀을 때 다이얼로그가 뜨는 방법은 아래와 같다. edit()는 onclick 함수이다. fun edit(view: View) { val builder = AlertDialog.Builder(this) builder.setTitle("타이틀 입니다.") .setMessage("메세지 내용 입니다.") .setPositiveButton("확인", DialogInterface.OnClickListener { dialog, id -> }) .setNegativeButton("취소", DialogInterface.OnClickListener { dialog, id -> }) builder.show() } 이렇게 하면 아래와 같은 결과를 얻는다. 버튼을 클릭하면 DialogInterface안에 원하는.. 카테고리 없음 2023. 4. 3. [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. 도통 모르겠어서 기록하면서 공부하는 Jetpack Compose_ glance 코드 샘플 분석 후 적용하기까지 (1) 투두, 메모, 디데이 기능을 하나의 앱 안에서 모두 사용할 수 있는 간단한 앱을 만드는 데 1주일이 걸렸다. compose의 매력을 즐기면서 간단하고 빠르게 구현할 수 있어서 즐거웠는데... 가장 주요 목적이었던 위젯 만드는 부분에서 완전히 꽉 막히고 말았다. 이왕이면 compose로 만들고 싶어서 시작한 것이었는데, 자료도 많지 않았고 있어도 단순히 정말 위젯을 만들기만 하는 코드들이었다. 그래서 그냥 자료 많은 방법으로 갈까도 하다가 이왕 시작한 거 어떻게 해서든지 끝까지 해내보겠다는 마음으로 공부를 시작해 본다. 아래 url은 공식문서의 glance파트에 있는 코드 샘플 깃허브이다. https://github.com/android/user-interface-samples/tree/main/AppWi.. 안드로이드 앱 개발 공부/jetpack Compose 2023. 3. 20. [Android] Intent : 인텐트 인텐트는 메시징 객체로, 다른 앱 구성 요소부터 작업을 요청하는 데 사용할 수 있다. 인텐트 구성 요소 사이의 통신을 촉진하는 데는 여러가지 방식이 있지만 기본적으로는 크게 세가지로 나눌 수 있다. - 액티비티 시작 액티비티가 완료되었을 때 결과를 수신하려면, startActivityForResult()를 호출한다. 액티비티는 해당 결과를 이 액티비티의 onActivityResult() 콜백에서 별도의 Intent 객체로 수신한다. activity는 앱 안의 단일 화면을 나타낸다. activity의 새 인스턴스를 시작하려면 Intent를 startActivity()로 전달하면 된다. Intent는 시작할 액티비티를 설명하고 모든 필수 데이터를 담고 있다. - 서비스 시작 Intent는 시작할 서비스를 설.. 안드로이드 앱 개발 공부/안드로이드 기본(노션 이동) 2023. 3. 3. [Android] Fragment Life Cycle : 프레그먼트 생명주기 onAttach() 프래그먼트가 액티비티에 붙을 때 호출 인자로 Context가 주어진다. oncreate() 프래그먼트가 액티비티의 호출을 받아 생성 Bunddle로 액티비티로부터 데이터가 넘어옴 UI 초기화는 불가능 onCreateView() 레이아웃 inflate 담당 savedInstanceState로 이전 상태에 대한 데이터 제공 View와 관련된 객체를 초기화할 수 있음 onViewCreated() onCreagteView()를 통해 반환된 View 객체는 onViewCreated()의 파라미터로 전달된다. 이때 Lifecycle이 INITIALIZED 상태로 업데이트가 됨 때문에 View의 초기값 설정, LiveData 옵저빙, RecyclerView, ViewPager2에 사용될 Adapt.. 안드로이드 앱 개발 공부/안드로이드 기본(노션 이동) 2023. 3. 3. [Android] Activity LifeCycle : 액티비티 생명주기 Activity가 시작되고 종료되는 시점까지의 상태를 말한다. -활동 수명 주기 단계 간에 전환하기 위해 활동 클래스는 6가지 콜백으로 구성되어 있다. →[onCreate()], [onStart()], [onResume()], [onPause()], [onStop()], [onDestroy()] oncreate() 이 콜백은 시스템이 먼저 활동을 생성할 때 실행되는 것으로 필수적으로 구현되어야 한다. 활동이 생성되면 “생성됨” 상태가 됨. 활동의 전체 수명 주기동안 한 번만 발생해야 하는 기본 애플리케이션 시작 로직을 실행. onStart() 활동이 “시작됨” 상태에 들어가면 콜백 됨. 액티비티가 사용자에게 보이기 직전에 실행됨. BroadCast Reciever 실행. onstart()가 호출되면 활동.. 안드로이드 앱 개발 공부/안드로이드 기본(노션 이동) 2023. 3. 3. 이전 1 2 다음