전체 글

안드로이드/이론

[ 안드로이드 ] Fragment에서 onBackPressed(뒤로가기 이벤트) 처리하기

Fragment 위에 또 다른 화면을 띄워야 했다. 새로 띄울 화면은 배경이 반투명으로, 기존의 화면이 비쳐 보여야했기 때문에 새로운 Fragment를 띄우는 것이 아닌 View로 덮어 씌우는 방식을 선택 했다. 이런 식으로 구현하니 뒤로가기 처리가 문제가 되었는데, onBackPressedDispatcher를 이용해서 간단히 해결할 수 있었다. onBackPressedCallback 정의 private val onBackPressedCallback = object : OnBackPressedCallback(true) { override fun handleOnBackPressed() { // 특정 뷰가 보일 떈 직접처리 if(bind.clSelectAssessment.isVisible){ hideSele..

BOJ

[ 백준 26876 ] - New Time (Kotlin)

26876번: New Time Nikolay has a digital clock that displays time in 24-hour format, showing two integers: hours (from $00$ to $23$) and minutes (from $00$ to $59$). For example, the clock can show 00:00, 18:42, or 23:59. The clock has two buttons that can be used for manual www.acmicpc.net 문제 이해 & 기본 개념 잘못된 시간과 정확한 시간이 주어지고, 1분씩 증가하는 A버튼, 1시간씩 증가하는 B버튼이 있다. 버튼을 최소 횟수로 눌러서 정확한 시간에 맞추는 문제 중요 포인트 시간..

안드로이드/이론

[ 안드로이드 ] RecyclerView - StaggeredLayoutManager 아이템 위치에 따라 여백 설정하기

RecyclerView StaggeredLayoutManager RecyclerView의 LayoutManager를 StaggeredLayoutManager로 아래 사진과 같은 레이아웃이 그려진다. 사진과 같이 Height에 따라 빈 공간을 채우게 되는데, 주의할 점은 인덱스가 채워지는 순서로 매겨진다는 것이다. 일반적인 Grid 레이아웃의 인덱스와는 다른 형태인 것을 볼 수 있다. ItemDecorator를 이용하여 RecyclerView 아이템에 여백을 설정할 때, 인덱스로 위치를 구분하곤 하는데, StaggeredLayoutManager에선 인덱스로 위치를 구분하긴 힘들기 때문에 조금 다른 방법을 사용해야한다. 아이템 위치 구분하기 위의 사진과 같이 아이템 끼리의 간격을 동일하게 지정해주려면, 각 ..

안드로이드/이론

[ 안드로이드 ] WebView 동영상 전체화면 처리 ( + 상단바 숨기기)

WebView 동영상 전체화면 안드로이드의 WebView에선 기본적으로 동영상 전체화면 처리를 해주지 않는다. 따라서, 별도로 커스텀을 해야하며 전체화면 버튼 클릭 시 새로운 화면을 위에 덮어 씌운다고 생각하면 된다. WebChromeClient 클래스를 상속 받아서 커스텀해야하고, onShowCustomView, onHideCustomView 메소드를 통해 전체화면 처리를 할 수 있다. FullScreenHolder 생성 동영상이 올라갈 배경을 지정한다. 이 클래스를 지정하지 않으면 동영상을 제외한 여백 부분이 투명하게 처리된다. private class FullScreenHolder(context:Context): FrameLayout(context) { init { setBackgroundColor..

안드로이드/이론

[ 안드로이드 ] ViewPager2 안에 WebView 중첩 Swipe 처리

상황 ViewPager2 내에 WebView를 넣었을 때, WebView 안에 배너와 같은 horizonScroll이 가능한 View가 있으면 충돌이 일어난다. 처리 방법 WebView의 Down 터치 이벤트 감지 시 ViewPager의 Swipe 기능 Off WebView의 Up 터치 이벤트 감지 시 ViewPager의 Swipe 기능 On WebView 내에서 OverScroll 감지 시 ViewPager Swipe 기능 On → WebView에서 Down 터치 이벤트가 감지되는 순간 ViewPager에 사용자 액션을 차단하여 터치 이벤트를 WebView 내의 배너(기타 스크롤이 가능한 뷰들)가 가져가도록 하는 것 코드 CustomWebView.kt class CustomWebView : WebVie..

안드로이드/이론

[ 안드로이드 ] WebView 페이지 탐색 처리

Android의 WebView에서 링크를 클릭하면 URL을 처리하는 앱이 실행되는 것이 기본적인 동작이지만, 해당 링크가 WebView 내에서 열리도록 동작을 재정의할 수 있다. 이렇게 하면, WebView 내에서 웹페이지 방문 기록을 통해 사용자가 앞뒤로 페이지 탐색이 가능해진다. Url 실행 처리 1. WebViewClient 연결 사용자가 클릭한 링크를 WebView에서 열려면, setWebViewClient()를 통해 WebView에게 WebViewClient를 제공해야 함 val myWebView: WebView = findViewById(R.id.webview) myWebView.webViewClient = WebViewClient() 이렇게만 해주면 사용자가 클릭한 모든 링크가 WebView..

안드로이드/이론

[ 안드로이드 ] WebView 기본 사용법

WebView 사용법 1. 권한 요청 WebView를 사용하기 위해선 인터넷 권한이 필요 ... 2. 앱에 WebView 추가 xml에서 추가 Activity에서 추가 val myWebView: WebView = findViewById(R.id.webview) myWebView.loadUrl("http://www.example.com") 3. 웹 페이지 로드 loadUrl() url로 로드 val myWebView:WebView = findViewById(R.id.webview) myWebView.loadUrl("http://www.example.com") 로컬에서 로드 val myWebView:WebView = findViewById(R.id.webview) webView.loadUrl("file://..

BOJ

[ 백준 1005 ] - ACM Craft (Kotlin)

1005번: ACM Craft 첫째 줄에는 테스트케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 건물의 개수 N과 건물간의 건설순서 규칙의 총 개수 K이 주어진다. (건물의 번호는 1번부 www.acmicpc.net 문제 이해 & 기본 개념 각 건물의 소요 시간과 선행 관계가 주어질 때, 특정 건물을 짓기까지 걸리는 최소 시간을 구하는 문제 최종 풀이 기본 위상 정렬 문제에다가 각 건물의 위치에서의 최대 시간(이전 건물의 건설이 모두 끝나야하므로 최대)만 계산 해주면 된다. 소스 코드 import java.util.* import kotlin.math.max fun topologySort( n:Int, last:Int, adj:Array, time:Array, dis:..

dongx._.2
DongZip