분류 전체보기

안드로이드/이론

[ 안드로이드 ] 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:..

BOJ

[ 백준 2473 ] - 세 용액 (Kotlin)

2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net 먼저 풀어보면 좋을 문제 2467번: 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 - www.acmicpc.net 문제 이해 & 기본 개념 세 용액의 합이 최소가 되는 경우를 구하는 문제 용액(2467번) 문제에서 하나의 용액이 더 추가 되었다. 용액(2467번) 문제는 투 포인터..

안드로이드/이론

[ 안드로이드 ] 클릭 가능한 모든 뷰에 반투명 효과 넣기

졸업 작품 앱을 만들던 중 뷰를 클릭했을 때 반투명 효과를 적용하고 싶었다. 단, 클릭 가능한 모든 뷰에 자동으로 적용하고 싶었다. 일일이 xml에서 지정해주는게 아닌 자동으로 할 방법이 없을까를 생각하다가 이 글을 작성하게 되었다. 해당 글에선 TouchListener를 Override 하여 모든 뷰에 클릭 효과를 넣는 방법을 소개한다. TransparentTouchListener.kt 생성 뷰를 클릭했을 때 반투명 효과를 주기 위해 아래와 같이 OnTouchListener를 재정의한다. class TransparentTouchListener( private val onTouchChanged: ((View, MotionEvent) -> Unit)? = null ) : View.OnTouchListene..

JAVA

[ JAVA ] MVP 패턴 + 코드 예시

MVP 패턴 구조 Model : 데이터를 처리하는 부분 View : 사용자에게 보여지는 UI 부분 Presenter : View의 요청을 받아 Model에게 전달하는 부분 (Model이 처리해준 결과를 받아서 View로 반환) 기타 클래스 Entity Entity 클래스는 DB 테이블과 직접적으로 매핑 되는 클래스를 뜻함 쉽게 생각하면 DB 테이블(또는 Json으로 저장된 파일)과 형태가 일치 Playlist.json 플레이리스트 데이터가 아래와 같은 Json 형태로 저장되어 있는 경우 { "id": "P0000001", "title": "플레이리스트 제목", "author": "작성자", "inform": "설명", "likes": 999, "downloads": 1023, "createTime": "..

안드로이드/이론

[ 안드로이드 ] Retrofit2를 이용하여 서버와 통신하기 (2) - 예시

[ 안드로이드 ] Retrofit2를 이용하여 서버와 통신하기 안드로이드에서 Retrofit2으로 서버와 통신하는 경우가 많은데, 에러 처리를 제대로 해주지 않아 앱이 강제 종료 되는 경우가 많다. 모든 에러를 다 처리해줄 수도 없고, 서버에서 어떤 문제가 발 dongx2.tistory.com 이전 글에서 서버의 요청을 안전하게 처리할 수 있는 방법을 소개했다. 이번 글에선 실제 요청을 보내는 코드 예시를 작성하고자 한다. 일단, 서버로부터 데이터를 받아올 Dto 클래스를 생성하기 위해서 서버의 Api 문서를 확인해야한다. 서버 Api 형식 확인 Dto 클래스를 생성하기 전 서버에서 어떤 형식으로 요청을 받는지, 응답은 어떻게 주는지를 확인해야 한다. 서버의 API Docs (Swagger 등)을 확인하..