전체 글

안드로이드/안드로이드

[Android/Kotlin] SharedPreferences

Preference란? 프로그램의 설정 정보 (사용자의 옵션 선택 사항이나 프로그램의 구성 정보)를 영구적으로 저장하는 용도로 사용 XML 포맷의 텍스트 파일에 키-값 세트로 정보를 저장 응용 프로그램 내의 액티비티 간에 공유하며, 한쪽 액티비티에서 수정 시 다른 액티비티에서도 수정된 값을 읽을 수 있다. 사용법 1. getSharedPreferences (name, mode) 여러 개의 Shared Preference파일들을 사용하는 경우 name : 프레퍼런스 데이터를 저장할 XML 파일의 이름이다. mode : 파일의 공유 모드 - MODE_PRIVATE: 생성된 XML 파일은 호출한 애플리케이션 내에서만 읽기 쓰기가 가능 - MODE_WORLD_READABLE, MODE_WORLD_WRITEABL..

안드로이드/안드로이드

[Android/Kotlin] DialogFragment 크기조절

안드로이드에는 커스텀한 다이얼로그를 사용하고 싶어 DialogFragment를 상속받는 새로운 다이얼로그를 만들곤 합니다. 여기서 주의할 점은 해당 다이얼로그의 크기를 제대로 설정을 해주지 않는다면 DialogFragment의 크기때문에 원하는 디자인이 안 나올 수도 있다는 것입니다. 여기서는 2가지 방법으로 크기로 조절할 수 있습니다. xml에 고정된 값주기 FrameLayout 등 뷰그룹을 사용해 감싸주면 원하는 사이즈의 다이얼로그가 노출됩니다. 그렇지만 이 방법의 경우 모든 안드로이드 폰의 화면이전부 다르기 때문에 상대적으로 줄 수는 없다는 점입니다. 코드에서 조절 //in DialogFragment onCreate(){ requireContext().dialogFragmentResize(this,..

안드로이드/안드로이드

[Android/Kotlin] 퍼미션(권한)허용

안드로이드앱에서는 기기에 있는 데이터나 기능들을 접근하기 위해서는 권한을 설정해줘야 합니다. 또한 그권한이 중요한 권한이거나 버전이 올라감에 따라 manifest에 사용하겠다고 알려주더라도 앱에서 또 한 번 사용자에게 이 권한을 사용해도 되는지 물어볼 수 있습니다. ContextCompat.checkSelfPermission함수를 통하여 현재 권한이 있는지 확인할수있으며ActivityCompat.requestPermissions로 안드로이드에서 지원하는 권한용청 다이얼로그를 보여줄 수 있습니다. 그렇지만 거부했을경우 사용자에게 이 부분으로 생길 수 있는 문제를 알릴 필요가 있습니다. 이러한 부분은 ActivityCompat.shouldShowRequestPermissionRationale로 조건문으로 검..

안드로이드/안드로이드

[Android/Kotlin] 리사이클러뷰(RecyclerView) 스와이프 이벤트

안드로이드의 리사이클러뷰에서 스와이프 이벤트를 하는 방법 중 ItemTouchHelper.callback()을 이용할 수 있습니다. 리사이클러뷰에서 스와이프나 드래그등 동작을지원해 해당 동작들을 허용하거나 막을 수 있으며 해당 동작을 했을 때 어떤 이벤트를 발생시킬 것인지 관리할 수 있습니다. 사용법 //적용 //.... userListItemHelper.attachToRecyclerView(recyclerView)//리사이클러뷰와 연결 연결 //구현 class UserListItemHelper(private val requsetPermission:(pos:Int)->(Unit)) : ItemTouchHelper.Callback() { companion object{ private const val TA..

안드로이드/안드로이드

[Android/Kotlin] attachToParent

뷰바인딩에서는 inflate 함수가 2가지 오버로드된 버전으로 제공됩니다. 이 두 가지 버전의 차이는 attachToParent 매개변수의 유무입니다. 다음은 두 가지 버전의 inflate 함수의 예시 코드입니다. //attachToParent 사용 하지 않음 val binding = ActivityMainBinding.inflate(layoutInflater) //attachToParent 사용 val binding = ActivityMainBinding.inflate(layoutInflater, parent, attachToParent = false) 리사이클러뷰에서는 binding을 이용해 뷰홀더를 만드는 과정에서는 해당작업을 할 때는 아래와 같은 inflate 함수를 사용해야 합니다. 만약 그렇지..

안드로이드/안드로이드

[Android/Kotlin] 프래그먼트안 프래그먼트에서 뒤로가기

오늘은 프래그먼트 안에 프래그먼트를 두고 onBackPressed 이벤트가 일어날 때 이전의 프래그먼트로 가게 동작시키고 싶었습니다. 그러기 위해서는 먼저 프래그먼트 안에서 프래그먼트를 바꿔줄 필요가 있었습니다 val fragment1 = Fragment1().getInstance() supportFragmentManager.beginTransaction().replace(R.id.container, fragment1).commit() 기존액티비티에서는 위처럼 supportFragmentManager를 이용하여 프래그먼트를 쉽게 바꿔 줄 수 있었지만 프래그먼트에는 supportFragmentManager가 없기에 다른 매니저를 가져와야 했습니다. /** * Return a private FragmentM..

안드로이드/안드로이드

[Android/Kotlin] 알림(Notification) - 1, NotificationChannel 속성

이전에 알림의 채널에 관련돼서 포스팅을 했지만 알림에 관해서는 정리를 안 한 것 같아 알림 기능을 정리해 볼까 합니다. 알림은 이러한 구조로 구성됩니다. NotificationManager : 알림을 시스템에 발생시키는 SystemService Notification : 알림 구성 정보를 가지는 객체 NotificationCompat.Builder : 알림을 다양한 정보로 생성 NotificationChannel : 알림의 관리 단위(Android Oreo에서 추가) 이제 위 구조들을 이용하여 알림을 생성시켜 봅시다. 1. 처음에는 NotificationManager를 안드로이드에서 받아 와야 합니다. val manager = getSystemService(NOTIFICATION_SERVICE) as N..

코틀린/프로그래머스

[프로그래머스] - 정수를 나선형으로 배치하기(Kotlin)

https://school.programmers.co.kr/learn/courses/30/lessons/181832 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요. 제한사항 1 ≤ n ≤ 30 입출력 예 n result 4 [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]] 5 [[1, 2..

안드로이드/안드로이드

[Android/Kotlin] 리사이클러뷰(RecyclerView) 스크롤 이벤트

리사이클러뷰에서는 기존에 스크롤 이벤트를 관리할 때 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; } 그러나 이방식은 스크롤 동작에 따라 여러 개의..

안드로이드/안드로이드

[Android/Kotlin] 알림(Notification)아이디 채널아이디

오늘은 알림(Notificatio)을 알아볼까 합니다 알림은 사용자에게 미리 알림을 주고 다른 사람과의 소통을 가능하게 하며 앱에서 보내는 기타 정보를 적시에 제공하기 위해 Android가 앱의 UI 외부에 표시하는 메시지입니다. 사용자는 알림을 탭 하여 앱을 열거나 알림에서 바로 특정 작업을 실행할 수 있습니다. 공식 안드로이드 docs를 보면 알림을 이렇게 설명하고 있습니다. 알림은 여러 방식으로 사용자에게 여러 정보들을 표시하거나 동작(event)들을 수행할 수 있게 해 줍니다. 기존에 안드로이드에서는 알림 채널을 따로 만들어 줄 필요 없이 알림을 구현할 수 있었지만 안드로이드 API26 오레오 버전부터는 따로 Notification Channel을 추가를 해줘야 합니다. 이처럼 Notificati..

감자씨앗
코딩과 게임