Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 코루틴
- Gradle
- 안드로이드 스튜디오
- 유튜브
- Retrofit
- RecyclerView
- 안드로이드
- image
- build
- 의존성주입
- MVVM
- 코틀린
- Kotlin
- 안드로이드스튜디오
- 웹뷰
- GIT
- 스튜디오
- 안스
- 깃헙
- 에러
- studio
- Github
- ADB
- viewpager
- WebView
- 레트로핏
- error
- Android
- dart
- coroutine
Archives
- Today
- Total
코딩하는 일용직 노동자
유튜브를 웹뷰로 구성하기 (1) 본문
유튜브에서 url을 공유할때 보면 www.youtu.be/nA8PosPb70c 이런식으로 url 이 클립보드에 복사됩니다.
이걸 웹뷰에서 열면 영상 뿐만 아니라 좋아요 버튼같은 유튜브의 다른 불필요한 UI도 화면에 표시됩니다.
웹뷰에 유튜브 영상 알맹이만 꽉차게 표시하고 싶으면
웹뷰에 www.youtube.com/embed/영상아이디 이렇게 하면 됩니다.
영상아이디는 유튜브 공유 URL 의 가장 마지막 / 뒤에 영문+숫자가 아이디입니다.
www.youtube.com/embed/nA8PosPb70c
이렇게 호출시키니깐 웹뷰 화면에 영상이 꽉 차게 표시 됩니다. ^^
wvYoutube.settings.apply {
javaScriptEnabled = true
setAppCacheEnabled(true)
pluginState = WebSettings.PluginState.ON
useWideViewPort = true
loadWithOverviewMode = true
}
wvYoutube.webChromeClient = VideoEnabledWebChromeClient()
wvYoutube.webViewClient = HelloWebViewClient()
wvYoutube.loadUrl("https://www.youtube.com/embed/$movieId")
class CustomWeb: WebChromeClient() {
var videoCustomView: View? = null
var customView : FrameLayout? = null
override fun onShowCustomView(view: View?, callback: CustomViewCallback?) {
if (videoCustomView != null) {
callback?.onCustomViewHidden()
return
}
val frame: FrameLayout = view as FrameLayout
val v1: View = frame.getChildAt(0)
view.setLayoutParams(FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT, Gravity.CENTER))
v1.setOnKeyListener(object : View.OnKeyListener {
override fun onKey(v: View?, keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK && event?.action == KeyEvent.ACTION_DOWN) {
onHideCustomView()
return true
}
return false
}
})
videoCustomView = view
customView?.visibility = View.VISIBLE
customView?.setBackgroundColor(Color.BLACK)
customView?.bringToFront()
customView?.addView(videoCustomView)
}
override fun onHideCustomView() {
super.onHideCustomView()
customView?.removeView(videoCustomView)
videoCustomView = null
customView?.visibility = View.INVISIBLE
}
}
internal inner class HelloWebViewClient : WebViewClient() {
override fun shouldOverrideUrlLoading(webview: WebView, url: String): Boolean {
webview.webChromeClient = CustomWeb()
webview.loadUrl(url)
return true
}
}
'안드로이드' 카테고리의 다른 글
View Background를 Rounded corner 형태로 만들기 (0) | 2020.05.12 |
---|---|
유튜브를 웹뷰로 구성하기 (2) (4) | 2020.05.11 |
웹뷰 키보드 이슈 해결사례 (0) | 2020.05.07 |
Android 10(Q) Scope Storage 에 관하여 (0) | 2020.05.05 |
코틀린 ScopeFunction 종류와 역할 (0) | 2020.05.03 |