일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Retrofit
- Github
- 안드로이드스튜디오
- RecyclerView
- 유튜브
- Gradle
- build
- studio
- 웹뷰
- image
- dart
- Android
- 코틀린
- 의존성주입
- viewpager
- WebView
- 안드로이드 스튜디오
- 에러
- Kotlin
- MVVM
- 깃헙
- error
- 안스
- ADB
- 안드로이드
- GIT
- 레트로핏
- coroutine
- 스튜디오
- 코루틴
- Today
- Total
목록WebView (7)
코딩하는 일용직 노동자
운영중인 앱의 이벤트 상세화면에서 로드하는 이미지의 해상도가 1440x14300 에 용량이 5.8M 나 되는 어마무시한 넘이었다. 때문에 저사양폰에서는 이미지가 표시되지 못하고 검정색 화면으로 표시되었다. Glide의 캐싱옵션을 바꿔보고, 원본 이미지의 품질을 줄여서 용량을 800kb로 만들어도 여전히 표시되지 않았다. 아마도 해상도 자체가 워낙 상식을 벗어나다보니 이미지뷰가 처리해주지 못하는듯 하다. 이것을 웹뷰방식으로 처리해주는 Nasca 이미지로더를 사용해서 해결했다. 아래는 문제 해결에 결정적인 도움을 준 블로그이다. https://medium.com/myrealtrip-product/android-webview%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%9A%A8%..
안드로이드 웹뷰에서 불러온 html 페이지의 소스를 얻어내는 방법. fun initView() { webView.settings.apply { this.setSupportMultipleWindows(false) // 새창 띄우기 허용 this.setSupportZoom(false) // 화면 확대 허용 this.javaScriptEnabled = true // 자바스크립트 허용 this.javaScriptCanOpenWindowsAutomatically = false // 자바스크립트 새창 띄우기 허용 this.loadWithOverviewMode = true // html의 컨텐츠가 웹뷰보다 클 경우 스크린 크기에 맞게 조정 this.useWideViewPort = true // html의 viewpo..
# 들어가며 하이브리드 앱에서 웹뷰로 열린 웹문서에 태그가 있습니다. 사진을 첨부하기 위한 기능입니다. iOS는 앱에서 별도의 처리가 없어도 사진을 선택하면 웹으로 사진이 잘 등록됩니다만, 안드로이드에서는 사진을 선택해도 웹으로 등록이 안됩니다. 이번 포스팅에서는 태그에 카메라 or 사진 갤러리를 표시하고 사진촬영이나 이미지 선택후 웹에 이미지를 넘겨주는 처리를 알려드리겠습니다. 우선 WebChromeClient() 를 상속받은 커스텀 클래스를 만들고 아래의 함수를 오버라이드 해줍니다. class CustomWebChromeClient(val activity: AppCompatActivity) : WebChromeClient() { var filePathCallbackLollipop: ValueCallb..
유튜브를 웹뷰로 보여주도록 처리를 했는데 사이드 이펙트가 있었습니다. 전체화면 모드로 이동 후 복귀하면 웹뷰에 보여지는 화면 UI가 너무 이상하게 나오는겁니다. 또한 전체화면 모드에서 가로모드로 플레이가 되지 않습니다. 첨부된 소스를 이용하면 전체화면 모드시 가로모드로 전환해서 플레이가 됩니다. 또한 Back key 를 눌러 복귀해도 UI 상에 문제도 발생하지 않습니다. private fun setWebViewYoutube(wvYoutube: WebView, movieId: String) { wvYoutube.settings.apply { javaScriptEnabled = true setAppCacheEnabled(true) pluginState = WebSettings.PluginState.ON } ..
유튜브에서 url을 공유할때 보면 www.youtu.be/nA8PosPb70c 이런식으로 url 이 클립보드에 복사됩니다. 이걸 웹뷰에서 열면 영상 뿐만 아니라 좋아요 버튼같은 유튜브의 다른 불필요한 UI도 화면에 표시됩니다. 웹뷰에 유튜브 영상 알맹이만 꽉차게 표시하고 싶으면 웹뷰에 www.youtube.com/embed/영상아이디 이렇게 하면 됩니다. 영상아이디는 유튜브 공유 URL 의 가장 마지막 / 뒤에 영문+숫자가 아이디입니다. www.youtube.com/embed/nA8PosPb70c 이렇게 호출시키니깐 웹뷰 화면에 영상이 꽉 차게 표시 됩니다. ^^ wvYoutube.settings.apply { javaScriptEnabled = true setAppCacheEnabled(true) pl..
전체화면 사이즈의 Dialog 로 만들어진 화면이 있습니다. 메인화면에서 이동되는 서브화면이 모두 Dialog 로 만들어진 화면입니다. 그리고 이 화면은 웹뷰가 전체화면 사이즈로 배치되어 있습니다. 실행해보면 웹뷰로된 액티비티와 별반 다를게 없는 서브화면입니다. 이 화면이 키보드가 올라와있는 상태에서 웹의 팝업이 뜨게되면 키보드가 내려가면서 해당 부분이 제대로 그려지지 않아 하얗게 보이는 현상이 발생했습니다. 버튼 클릭시 키보드가 내려가는 시간과 팝업이 보이는 시간이 같아서 발생하는듯 합니다. 처음에는 팝업이 보이는 타이밍을 0.2~0.3초 정도 딜레이를 주면 되지 않을까 했는데... 문제는 로그인 화면뿐만 아니라 텍스트입력창이 있는 다른 여러 서브화면에서 똑같은 현상이 있기때문에 모든 화면의 팝업들에 ..
코틀린 안드로이드 웹뷰 셋팅. webView.settings.apply { this.setSupportMultipleWindows(false) // 새창 띄우기 허용 this.setSupportZoom(false) // 화면 확대 허용 this.javaScriptEnabled = true // 자바스크립트 허용 this.javaScriptCanOpenWindowsAutomatically = false // 자바스크립트 새창 띄우기 허용 this.loadWithOverviewMode = true // html의 컨텐츠가 웹뷰보다 클 경우 스크린 크기에 맞게 조정 this.useWideViewPort = true // html의 viewport 메타 태그 지원 this.builtInZoomControls =..