From 89cfd1a8bafa008e975e5299c197f288f54e9337 Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Thu, 5 Sep 2019 20:43:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=AE=80=E5=8D=95=E7=9A=84?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E6=93=8D=E4=BD=9C=E9=80=BB=E8=BE=91=20https:?= =?UTF-8?q?//gitlab.ghzs.com/pm/halo-app-issues/issues/617?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 9 +- app/proguard-rules.txt | 12 +- app/src/main/AndroidManifest.xml | 12 + .../gh/common/dialog/ReserveDialogFragment.kt | 2 +- .../java/com/gh/common/util/DisplayUtils.java | 38 ++ .../java/com/gh/common/util/Extensions.kt | 19 +- .../java/com/gh/common/view/StatusBarView.kt | 18 + .../gamedetail/desc/GameGalleryAdapter.kt | 14 +- .../qa/follow/AskFollowMoreDialog.kt | 8 +- .../qa/questions/edit/QuestionEditActivity.kt | 15 +- .../video/detail/DetailPlayerView.kt | 109 +++++ .../video/detail/VideoDetailActivity.kt | 33 ++ .../detail/VideoDetailContainerFragment.kt | 38 ++ .../video/detail/VideoDetailFragment.kt | 57 +++ .../video/detail/VideoFragmentPagerAdapter.kt | 18 + .../main/res/layout/activity_video_detail.xml | 10 + .../main/res/layout/fragment_video_detail.xml | 13 + .../fragment_video_detail_container.xml | 45 +++ .../main/res/layout/layout_simple_player.xml | 97 +++++ app/src/main/res/values/styles.xml | 373 +++++++++--------- 20 files changed, 735 insertions(+), 205 deletions(-) create mode 100644 app/src/main/java/com/gh/common/view/StatusBarView.kt create mode 100644 app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt create mode 100644 app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailActivity.kt create mode 100644 app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt create mode 100644 app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailFragment.kt create mode 100644 app/src/main/java/com/gh/gamecenter/video/detail/VideoFragmentPagerAdapter.kt create mode 100644 app/src/main/res/layout/activity_video_detail.xml create mode 100644 app/src/main/res/layout/fragment_video_detail.xml create mode 100644 app/src/main/res/layout/fragment_video_detail_container.xml create mode 100644 app/src/main/res/layout/layout_simple_player.xml diff --git a/app/build.gradle b/app/build.gradle index ef19c0a03c..b9342eecab 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -255,9 +255,14 @@ dependencies { implementation "top.zibin:Luban:${luban}" - // for video streaming + implementation "com.squareup.picasso:picasso:${picasso}" + + // for video streaming TODO 用 GSY 替换掉上面的这个 jiaozi implementation "cn.jzvd:jiaozivideoplayer:${jiaoziVideoView}" - implementation "com.danikula:videocache:${videoCache}" + implementation 'com.shuyu:gsyVideoPlayer-java:7.1.0' + implementation 'com.shuyu:gsyVideoPlayer-armv7a:7.1.0' + implementation 'com.shuyu:gsyVideoPlayer-x86:7.1.0' + implementation 'androidx.viewpager2:viewpager2:1.0.0-beta03' implementation "android.arch.work:work-runtime:${workManager}" diff --git a/app/proguard-rules.txt b/app/proguard-rules.txt index 0297c62be7..d2e0077db8 100644 --- a/app/proguard-rules.txt +++ b/app/proguard-rules.txt @@ -230,4 +230,14 @@ #阿里云上传 -keep class com.alibaba.sdk.android.oss.** { *; } -dontwarn okio.** --dontwarn org.apache.commons.codec.binary.** \ No newline at end of file +-dontwarn org.apache.commons.codec.binary.** + +#视频相关 +-keep class com.shuyu.gsyvideoplayer.video.** { *; } +-dontwarn com.shuyu.gsyvideoplayer.video.** +-keep class com.shuyu.gsyvideoplayer.video.base.** { *; } +-dontwarn com.shuyu.gsyvideoplayer.video.base.** +-keep class com.shuyu.gsyvideoplayer.utils.** { *; } +-dontwarn com.shuyu.gsyvideoplayer.utils.** +-keep class tv.danmaku.ijk.** { *; } +-dontwarn tv.danmaku.ijk.** \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7220d8b0af..02214e0f27 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -32,6 +32,14 @@ + + @@ -391,6 +399,10 @@ android:theme = "@style/Theme.Transparent" android:windowSoftInputMode = "adjustNothing" /> + + = 19 && Build.VERSION.SDK_INT < 21) { + setWindowFlag(activity, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS + | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, true); + } + if (Build.VERSION.SDK_INT >= 19) { + activity.getWindow().getDecorView().setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + ); + } + if (Build.VERSION.SDK_INT >= 21) { + setWindowFlag(activity, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS + | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, false); + activity.getWindow().setStatusBarColor(Color.TRANSPARENT); + activity.getWindow().setNavigationBarColor(Color.TRANSPARENT); + } + } + + private static void setWindowFlag(Activity activity, final int bits, boolean on) { + Window win = activity.getWindow(); + WindowManager.LayoutParams winParams = win.getAttributes(); + if (on) { + winParams.flags |= bits; + } else { + winParams.flags &= ~bits; + } + win.setAttributes(winParams); + } + } diff --git a/app/src/main/java/com/gh/common/util/Extensions.kt b/app/src/main/java/com/gh/common/util/Extensions.kt index 71cf6d22b0..3ae7ec31d4 100644 --- a/app/src/main/java/com/gh/common/util/Extensions.kt +++ b/app/src/main/java/com/gh/common/util/Extensions.kt @@ -11,18 +11,18 @@ import android.view.Gravity import android.view.View import android.widget.PopupWindow import android.widget.TextView -import androidx.annotation.ColorInt import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import androidx.lifecycle.* import androidx.viewpager.widget.ViewPager +import com.gh.common.constant.Config +import com.gh.gamecenter.BuildConfig import com.gh.gamecenter.R import com.google.gson.reflect.TypeToken import com.halo.assistant.HaloApp import com.lightgame.utils.Utils import okhttp3.MediaType import okhttp3.RequestBody -import org.json.JSONArray import java.net.URI /** @@ -302,4 +302,19 @@ fun TextView.setTextChangedListener(action: (s: CharSequence, start: Int, before fun Int.toColor() : Int{ return HaloApp.getInstance().application.resources.getColor(this) +} + +/** + * 测试用包裹 + */ +inline fun debugOnly(f: () -> Unit) { + if (BuildConfig.DEBUG) { + f() + } +} + +inline fun testChannelOnly(f: () -> Unit) { + if (HaloApp.getInstance().channel == Config.DEFAULT_CHANNEL) { + f() + } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/view/StatusBarView.kt b/app/src/main/java/com/gh/common/view/StatusBarView.kt new file mode 100644 index 0000000000..d7178305ef --- /dev/null +++ b/app/src/main/java/com/gh/common/view/StatusBarView.kt @@ -0,0 +1,18 @@ +package com.gh.common.view + +import android.content.Context +import android.os.Build +import android.util.AttributeSet +import android.view.View +import com.gh.common.util.DisplayUtils + +class StatusBarView @JvmOverloads constructor(context: Context?, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : View(context, attrs, defStyleAttr) { + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + val height = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { + 0 + } else { + DisplayUtils.getStatusBarHeight(resources) + } + setMeasuredDimension(View.MeasureSpec.getSize(widthMeasureSpec), height) + } +} diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameGalleryAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameGalleryAdapter.kt index 350772e638..e134603f2f 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameGalleryAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameGalleryAdapter.kt @@ -14,12 +14,11 @@ import butterknife.BindView import cn.jzvd.JzvdStd import com.facebook.drawee.view.SimpleDraweeView import com.gh.base.BaseRecyclerViewHolder -import com.gh.common.util.DataCollectionUtils -import com.gh.common.util.DataUtils -import com.gh.common.util.ImageUtils +import com.gh.common.util.* import com.gh.gamecenter.R import com.gh.gamecenter.ViewImageActivity import com.gh.gamecenter.databinding.GalleryVideoItemBinding +import com.gh.gamecenter.video.detail.VideoDetailActivity import com.halo.assistant.HaloApp import kotlinx.android.synthetic.main.player_view.view.* import java.util.* @@ -66,6 +65,15 @@ class GameGalleryAdapter(var context: Context, holder.adapterPosition, mEntrance) context.startActivity(intent) } + + testChannelOnly { + holder.itemView.setOnLongClickListener { + consume { + val intent = VideoDetailActivity.getIntent(context) + context.startActivity(intent) + } + } + } } is VideoViewHolder -> { ImageUtils.display(holder.binding.playerView.thumb, mGallery[position]) diff --git a/app/src/main/java/com/gh/gamecenter/qa/follow/AskFollowMoreDialog.kt b/app/src/main/java/com/gh/gamecenter/qa/follow/AskFollowMoreDialog.kt index 140661572b..65d00a80ec 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/follow/AskFollowMoreDialog.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/follow/AskFollowMoreDialog.kt @@ -2,14 +2,14 @@ package com.gh.gamecenter.qa.follow import android.app.Activity import android.content.Context -import androidx.databinding.DataBindingUtil import android.graphics.Point import android.os.Bundle -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.databinding.DataBindingUtil +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import com.gh.base.fragment.BaseDialogFragment import com.gh.gamecenter.PersonalHomeActivity import com.gh.gamecenter.R @@ -29,7 +29,7 @@ class AskFollowMoreDialog : BaseDialogFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - dialog.setCanceledOnTouchOutside(true) + dialog?.setCanceledOnTouchOutside(true) val lp = container.layoutParams lp.width = ((getScreenWidth(requireActivity())) * 0.8).toInt() diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt index 3b7951fd3e..690856e0fe 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/edit/QuestionEditActivity.kt @@ -3,18 +3,17 @@ package com.gh.gamecenter.qa.questions.edit import android.annotation.SuppressLint import android.app.Activity import android.app.Dialog -import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProviders import android.content.Context import android.content.Intent -import androidx.databinding.DataBindingUtil import android.os.Bundle -import androidx.recyclerview.widget.GridLayoutManager import android.text.Editable import android.text.TextWatcher import android.view.KeyEvent import android.view.MenuItem import android.widget.EditText +import androidx.databinding.DataBindingUtil +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProviders import com.gh.base.BaseActivity import com.gh.base.fragment.BaseDialogWrapperFragment import com.gh.base.fragment.WaitingDialogFragment @@ -263,11 +262,11 @@ class QuestionEditActivity : BaseActivity() { super.onDestroy() } - override fun onSaveInstanceState(outState: Bundle?) { + override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - outState?.putString(mSaveTitleKey, mViewModel.title) - outState?.putString(mSaveContentKey, mViewModel.content) - outState?.putStringArrayList(mSaveImagesKey, mViewModel.picList.value as java.util.ArrayList?) + outState.putString(mSaveTitleKey, mViewModel.title) + outState.putString(mSaveContentKey, mViewModel.content) + outState.putStringArrayList(mSaveImagesKey, mViewModel.picList.value as java.util.ArrayList?) } // Limits of EditText diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt b/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt new file mode 100644 index 0000000000..bf6a8972cd --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt @@ -0,0 +1,109 @@ +package com.gh.gamecenter.video.detail + +import android.content.Context +import android.util.AttributeSet +import android.view.Surface +import android.view.View +import android.widget.ImageView +import com.gh.gamecenter.R +import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer +import com.shuyu.gsyvideoplayer.video.base.GSYVideoView +import com.squareup.picasso.Picasso + +class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) + : StandardGSYVideoPlayer(context, attrs) { + + override fun init(context: Context) { + super.init(context) + + if (mThumbImageViewLayout != null && (mCurrentState == -1 || mCurrentState == GSYVideoView.CURRENT_STATE_NORMAL || mCurrentState == GSYVideoView.CURRENT_STATE_ERROR)) { + mThumbImageViewLayout.visibility = View.VISIBLE + } + } + + fun updateThumb(url: String) { + Picasso.with(context).load(url) + .into(findViewById(R.id.thumbImage)) + } + + override fun getLayoutId(): Int { + return R.layout.layout_simple_player + } + + /******************* 下方两个重载方法,在播放开始前不屏蔽封面,不需要可屏蔽 ********************/ + + override fun onSurfaceUpdated(surface: Surface) { + super.onSurfaceUpdated(surface) + if (mThumbImageViewLayout != null && mThumbImageViewLayout.visibility == View.VISIBLE) { + mThumbImageViewLayout.visibility = View.INVISIBLE + } + } + + override fun setViewShowState(view: View?, visibility: Int) { + if (view === mThumbImageViewLayout && visibility != View.VISIBLE) { + return + } + super.setViewShowState(view, visibility) + } + + /********************************各类UI的状态显示*********************************************/ + + override fun hideAllWidget() { + super.hideAllWidget() + setViewShowState(mBottomProgressBar, View.VISIBLE) + } + + override fun changeUiToNormal() { + super.changeUiToNormal() + setViewShowState(mStartButton, View.INVISIBLE) + setViewShowState(mBottomProgressBar, View.VISIBLE) + } + + override fun changeUiToPreparingShow() { + super.changeUiToPreparingShow() + } + + override fun changeUiToPlayingShow() { + super.changeUiToPlayingShow() + setViewShowState(mStartButton, View.INVISIBLE) + setViewShowState(mBottomProgressBar, View.VISIBLE) + } + + override fun changeUiToPauseShow() { + super.changeUiToPauseShow() + setViewShowState(mStartButton, View.VISIBLE) + setViewShowState(mBottomProgressBar, View.VISIBLE) + } + + override fun changeUiToPlayingBufferingShow() { + super.changeUiToPlayingBufferingShow() + setViewShowState(mBottomProgressBar, View.VISIBLE) + } + + override fun changeUiToCompleteShow() { + super.changeUiToCompleteShow() + setViewShowState(mBottomProgressBar, View.VISIBLE) + } + + override fun updateStartImage() { + // no need to change + } + + override fun touchDoubleUp() { + // we don't need double tap to stop + } + + override fun changeUiToPauseClear() { + // we don't need to hide play icon + } + + override fun onClick(v: View) { + val id = v.id + if (id == R.id.surface_container) { + clickStartIcon() + } else { + super.onClick(v) + } + } +} + diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailActivity.kt new file mode 100644 index 0000000000..3d6dab5c15 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailActivity.kt @@ -0,0 +1,33 @@ +package com.gh.gamecenter.video.detail + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import com.gh.base.BaseActivity +import com.gh.common.util.DisplayUtils +import com.gh.gamecenter.R + +class VideoDetailActivity : BaseActivity() { + + override fun getLayoutId(): Int { + return R.layout.activity_video_detail + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + DisplayUtils.transparentStatusAndNavigation(this) + + val containerFragment = VideoDetailContainerFragment() + + supportFragmentManager.beginTransaction().replace(R.id.placeholder, containerFragment).commitNowAllowingStateLoss() + } + + companion object { + fun getIntent(context: Context): Intent { + val intent = Intent(context, VideoDetailActivity::class.java) + return intent + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt new file mode 100644 index 0000000000..1c61dc5705 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt @@ -0,0 +1,38 @@ +package com.gh.gamecenter.video.detail + +import android.os.Bundle +import android.view.View +import androidx.viewpager2.widget.ViewPager2 +import com.gh.gamecenter.R +import com.gh.gamecenter.normal.NormalFragment +import kotlinx.android.synthetic.main.fragment_video_detail_container.* + +class VideoDetailContainerFragment : NormalFragment() { + + private lateinit var mFragmentAdapter: VideoFragmentPagerAdapter + + override fun getLayoutId(): Int { + return R.layout.fragment_video_detail_container + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_material) + toolbar.setNavigationOnClickListener { + requireActivity().finish() + } + + mFragmentAdapter = VideoFragmentPagerAdapter(this) + + mFragmentAdapter.videoList = arrayListOf( + "https://resource.ghzs.com/video/game/5cef8c58bb946d11052dfe65.mp4", + "https://resource.ghzs.com/video/game/5d26e984c391ca0c9a16121c.mp4", + "https://resource.ghzs.com/video/game/5d53bc8e656a5c05bf59d2e7.mp4") + + viewpager.adapter = mFragmentAdapter + viewpager.orientation = ViewPager2.ORIENTATION_VERTICAL + viewpager.offscreenPageLimit = 1 + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailFragment.kt new file mode 100644 index 0000000000..eedbb72dc4 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailFragment.kt @@ -0,0 +1,57 @@ +package com.gh.gamecenter.video.detail + +import android.os.Bundle +import android.util.Log +import android.view.View +import butterknife.BindView +import com.gh.gamecenter.R +import com.gh.gamecenter.normal.NormalFragment +import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder + +class VideoDetailFragment : NormalFragment() { + + private var videoUrl = "" + + @BindView(R.id.video) + lateinit var videoView: DetailPlayerView + + override fun getLayoutId(): Int { + return R.layout.fragment_video_detail + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + GSYVideoOptionBuilder() + .setIsTouchWiget(false) + .setUrl(videoUrl) + .setRotateViewAuto(false) + .setCacheWithPlay(true) + .setRotateViewAuto(false) + .setRotateWithSystem(false) + .setReleaseWhenLossAudio(true) + .setLockLand(true) + .setLooping(true) + .build(videoView) + + videoView.updateThumb("$videoUrl?x-oss-process=video/snapshot,t_0,f_jpg,w_0,h_0") + } + + override fun onResume() { + super.onResume() + videoView.startPlayLogic() + Log.d("lifeCycle", "onResume") + } + + override fun onPause() { + super.onPause() + Log.d("lifeCycle", "onPause") + } + + companion object { + fun newInstance(url: String): VideoDetailFragment { + return VideoDetailFragment().apply { videoUrl = url } + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/VideoFragmentPagerAdapter.kt b/app/src/main/java/com/gh/gamecenter/video/detail/VideoFragmentPagerAdapter.kt new file mode 100644 index 0000000000..4904eb3f90 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/video/detail/VideoFragmentPagerAdapter.kt @@ -0,0 +1,18 @@ +package com.gh.gamecenter.video.detail + +import androidx.fragment.app.Fragment +import androidx.viewpager2.adapter.FragmentStateAdapter + +class VideoFragmentPagerAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) { + + var videoList = arrayListOf() + + override fun getItemCount(): Int { + return videoList.size + } + + override fun createFragment(position: Int): Fragment { + return VideoDetailFragment.newInstance(videoList[position]) + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_video_detail.xml b/app/src/main/res/layout/activity_video_detail.xml new file mode 100644 index 0000000000..bddc4cf451 --- /dev/null +++ b/app/src/main/res/layout/activity_video_detail.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_video_detail.xml b/app/src/main/res/layout/fragment_video_detail.xml new file mode 100644 index 0000000000..71794ec600 --- /dev/null +++ b/app/src/main/res/layout/fragment_video_detail.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_video_detail_container.xml b/app/src/main/res/layout/fragment_video_detail_container.xml new file mode 100644 index 0000000000..c64feb1ebe --- /dev/null +++ b/app/src/main/res/layout/fragment_video_detail_container.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_simple_player.xml b/app/src/main/res/layout/layout_simple_player.xml new file mode 100644 index 0000000000..cd2ad9b30f --- /dev/null +++ b/app/src/main/res/layout/layout_simple_player.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 3040f71f45..ecf7dd69e1 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,248 +1,253 @@ - + - + - + - + - + - - 0dp - 0dp - 0dp - fill - @color/theme + + scrollable - + - + + + - + - + - + - + 16sp + @android:color/white + bold + - + italic + - + - + - + - + - + - + - + - + - + - + - + - + @color/black + - + @null + 36dp + 36dp + - + - + - + - + - + - \ No newline at end of file + \ No newline at end of file