개발/Android (14) 썸네일형 리스트형 [안드로이드/kotlin] scale 애니메이션을 통한 버튼 클릭 효과 추가하기(android scale animation bounce effect) https://github.com/evgenyneu/bounce-button-animation-android GitHub - evgenyneu/bounce-button-animation-android: A demo Android app that shows how to animate a button with spring/bounce eff A demo Android app that shows how to animate a button with spring/bounce effect. - GitHub - evgenyneu/bounce-button-animation-android: A demo Android app that shows how to animate a button with spr... github... [안드로이드/kotlin] 인터넷 연결 상태 확인하기 종종 UnknownHostException이라는 오류를 만날 수 있는데, 인터넷 연결 Permission을 사용하지 않았거나, 인터넷 통신 상태때문에 발생한다. 퍼미션 문제라면 아래 코드를 AndroidManifes.xml에 넣어주면 된다. 인터넷 연결 문제라면 통신 상태를 체크해 인터넷에 연결되지 않도록 막아준다. 인터넷 상태를 확인하기 위해 기본적인 객체들을 생성해주어야한다. val connectivityManager = getSystemService(ConnectivityManager::class.java) ConnectivityManager는 연결 상태를 알려준다. val currentNetwork = connectivityManager.getActiveNetwork() connectivityMa.. [안드로이드/kotlin] 카카오톡 채널 연결하기(채널 추가하기, 채널 채팅하기) 카카오톡의 모든 API를 사용하기 위해서는 기본적인 세팅이 필요하다. ※또한 카카오톡 채널 API를 사용하기 위해서는 채널 개설과 kakao developer에 프로젝트와 연결이 되어야 한다. 기본 세팅 1. build.gradle build.gradle(Project) 파일에 다음 코드를 추가한다. allprojects { repositories { google() jcenter() // 추가 maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/'} } } 2. build.gradle(app) 필요한 모듈 설정을 추가한다. implementation "com.kakao.sdk:v2-talk:2.10.0" 채널 API 이벤트 등록 기본 .. [안드로이드/오류] API 통신 시 발생하는 SocketTimeoutException 개발환경에서는 보기 어려운 오류이지만 간혹 통신상태가 고르지 못한 사용자들이 있어 플레이스토어 비정상 종료 로그에 남아있는 걸 확인할 수 있었다. java.net.SocketTimeoutException: at okio.Okio$4.newTimeoutException (Okio.java:232) at okio.AsyncTimeout.exit (AsyncTimeout.java:285) at okio.AsyncTimeout$2.read (AsyncTimeout.java:241) at okio.RealBufferedSource.indexOf (RealBufferedSource.java:354) (...) 말 그대로 서버 통신 시 Timeout때문에 발생하는 오류이다. 기본적으로 connectTimeout은 1.. [안드로이드/오류] 푸시 FirebaseMessagingService IllegalArgumentException 오류 AndroidRuntime: FATAL EXCEPTION: MQTT Rec: com.app.mobile-2e24ccbde048f2e91635651784 Process: com.app.mobile, PID: 17031 java.lang.IllegalArgumentException: com.app.mobile: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends o.. [안드로이드/kotlin] 특정 날짜까지 남은 시간 타이머 만들기(CountDownTimer) CountDownTimer는 별도의 Thread를 생성하여 처리하지 않아도 간편하게 타이머 기능을 만들 수 있는 클래스다. 공식 문서를 통해 생성자와 기본 함수들을 확인할 수 있다. 함수명들이 굉장히 직관적이기 때문에 따로 설명을 하지 않아도 이해할 수 있다. CountDownTimer는 두 개의 파라미터를 받는다. - millisInFuture : 타이머의 작동 시간의 밀리초 값. 종료시간 - 시작시간 의 밀리값을 넣으면 된다. - coundDownInterval : onTick()의 호출 간격. 단위는 마찬가지로 밀리초이기 때문에 1초 간격을 설정하고 싶다면 1000을 넣어야 한다. 먼저 종료 시점을 임의로 생성해준다. val deadLine = Calendar.getInstance() deadLin.. [안드로이드/kotlin] ViewTreeObserver로 View의 크기 구하기 View에는 width, height 혹은 measuredWidth, measuredHeight 함수가 존재한다. 하지만 이걸 onCreate() 에서 호출하게 되면 0을 리턴하게 된다. onCreate 시점에는 View가 아직 그려지기 전 단계이기 때문이다. 뷰의 크기를 구하기 위해서는 'ViewTreeObserver'를 사용하면 되는데, 이름 그대로 ViewTree에 대한 옵저버(감시 혹은 관찰)라고 보면 된다. A view tree observer is used to register listeners that can be notified of global changes in the view tree. 공식 문서에도 설명이 상세하게 기재되어 있다. 말 그대로 View Tree가 변경될 때 변경사항을 .. [안드로이드/Kotlin] RecyclerView를 이용한 GridView 생성하기 (GridLayoutManager) 안드로이드에는 격자 형태로 아이템을 보여주는 GridView 라는 위젯이 존재한다. 하지만 GridView를 사용하는 대신 RecyclerView에 GridLayoutManager 를 설정하여 사용할 수 있다. val gridLayoutManager = GridLayoutManager(this, 3) mBinding.recyclerItem.layoutManager = gridLayoutManager mBinding.recyclerItem.adapter = RecyclerAdapter() GridLayoutManager 를 생성할 때 파라미터로 context 와 한 줄에 표시해줄 아이템 수인 spanCount 를 입력하면 된다. GridLayoutManager(this, 3) -> 한 줄에 3개의 아이템을.. 이전 1 2 다음 목록 더보기