diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6c495c08f9..cb1beb80ca 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -397,6 +397,10 @@ android:name="com.gh.gamecenter.personalhome.video.MyVideoActivity" android:screenOrientation = "portrait"/> + + = Build.VERSION_CODES.LOLLIPOP) { + Window window = getWindow(); + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + window.setStatusBarColor(color); + } + } + protected abstract boolean onNavigationIconClicked(); protected abstract boolean showDownloadMenu(); diff --git a/app/src/main/java/com/gh/common/util/EntranceUtils.java b/app/src/main/java/com/gh/common/util/EntranceUtils.java index ca5b5307cc..99a64be550 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -118,6 +118,7 @@ public class EntranceUtils { public static final String KEY_PATH_VIDEO = "pathVideo"; public static final String KEY_VIDEO_ID = "videoId"; public static final String KEY_DIRECT_COMMENT = "directComment"; + public static final String KEY_SORT = "sort"; public static void jumpActivity(Context context, Bundle bundle) { 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 3ae7ec31d4..080b4c2af3 100644 --- a/app/src/main/java/com/gh/common/util/Extensions.kt +++ b/app/src/main/java/com/gh/common/util/Extensions.kt @@ -300,10 +300,14 @@ fun TextView.setTextChangedListener(action: (s: CharSequence, start: Int, before }) } -fun Int.toColor() : Int{ +fun Int.toColor(): Int { return HaloApp.getInstance().application.resources.getColor(this) } +fun Int.toSimpleCount(): String { + return NumberUtils.transSimpleCount(this) +} + /** * 测试用包裹 */ diff --git a/app/src/main/java/com/gh/gamecenter/collection/CollectionWrapperFragment.java b/app/src/main/java/com/gh/gamecenter/collection/CollectionWrapperFragment.java index 34139061d6..8fd4cd7cf3 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/CollectionWrapperFragment.java +++ b/app/src/main/java/com/gh/gamecenter/collection/CollectionWrapperFragment.java @@ -33,6 +33,7 @@ public class CollectionWrapperFragment extends BaseFragment_TabLayout { tabTitleList.add(getString(R.string.collection_article)); tabTitleList.add(getString(R.string.collection_toolkit)); tabTitleList.add(getString(R.string.collection_info)); + tabTitleList.add("视频"); } @Override @@ -41,6 +42,7 @@ public class CollectionWrapperFragment extends BaseFragment_TabLayout { fragments.add(CommunityArticleFragment.getInstance(CommunityArticleFragment.Type.COLLECTION)); fragments.add(new ToolsFragment()); fragments.add(ArticleFragment.getInstance(ArticleFragment.Type.COLLECTION)); + fragments.add(new VideoFragment()); for (Fragment fragment : mFragmentsList) { fragment.setArguments(getArguments()); } diff --git a/app/src/main/java/com/gh/gamecenter/collection/VideoAdapter.kt b/app/src/main/java/com/gh/gamecenter/collection/VideoAdapter.kt new file mode 100644 index 0000000000..5ddae29ad6 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/collection/VideoAdapter.kt @@ -0,0 +1,54 @@ +package com.gh.gamecenter.collection + +import android.content.Context +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.gh.common.constant.ItemViewType +import com.gh.common.util.ImageUtils +import com.gh.common.util.toSimpleCount +import com.gh.gamecenter.R +import com.gh.gamecenter.adapter.viewholder.FooterViewHolder +import com.gh.gamecenter.baselist.ListAdapter +import com.gh.gamecenter.baselist.NormalListViewModel +import com.gh.gamecenter.databinding.VideoItemBinding +import com.gh.gamecenter.entity.MyVideoEntity +import com.gh.gamecenter.video.VideoItemViewHolder + +class VideoAdapter(context: Context, + val mViewModel: NormalListViewModel) : ListAdapter(context) { + override fun getItemViewType(position: Int): Int { + if (position == itemCount - 1) return ItemViewType.ITEM_FOOTER + return ItemViewType.ITEM_BODY + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + val view: View + return when (viewType) { + ItemViewType.ITEM_FOOTER -> { + view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false) + FooterViewHolder(view) + } + else -> { + view = mLayoutInflater.inflate(R.layout.video_item, parent, false) + return VideoItemViewHolder(VideoItemBinding.bind(view)) + } + } + } + + override fun getItemCount(): Int { + return if (mEntityList == null || mEntityList.isEmpty()) 0 else mEntityList.size + FOOTER_ITEM_COUNT + + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + if (holder is VideoItemViewHolder) { + val entity = mEntityList[position] + ImageUtils.display(holder.binding.videoCover, entity.poster) + holder.binding.videoLikeCount.text = entity.vote.toSimpleCount() + } else if (holder is FooterViewHolder) { + holder.initFooterViewHolder(mViewModel, mIsLoading, mIsNetworkError, mIsOver) + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/collection/VideoFragment.kt b/app/src/main/java/com/gh/gamecenter/collection/VideoFragment.kt new file mode 100644 index 0000000000..b700ba661b --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/collection/VideoFragment.kt @@ -0,0 +1,55 @@ +package com.gh.gamecenter.collection + +import android.os.Bundle +import android.view.View +import androidx.lifecycle.ViewModelProviders +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.gh.common.util.dip2px +import com.gh.common.view.GridSpacingItemDecoration +import com.gh.gamecenter.baselist.ListFragment +import com.gh.gamecenter.baselist.NormalListViewModel +import com.gh.gamecenter.entity.MyVideoEntity +import com.gh.gamecenter.manager.UserManager +import com.gh.gamecenter.retrofit.RetrofitManager +import com.halo.assistant.HaloApp +import io.reactivex.Observable + +class VideoFragment : ListFragment>() { + private var mAdapter: VideoAdapter? = null + + override fun provideListAdapter(): VideoAdapter { + if (mAdapter == null) { + mAdapter = VideoAdapter(context!!, mListViewModel) + } + return mAdapter!! + } + + override fun getItemDecoration(): RecyclerView.ItemDecoration { + return GridSpacingItemDecoration(3, 2F.dip2px(), false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + val gridLayoutManager = GridLayoutManager(context, 3) + gridLayoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() { + override fun getSpanSize(position: Int): Int { + return if (position == mAdapter!!.itemCount - 1) { + 3 + } else { + 1 + } + } + } + mListRv.layoutManager = gridLayoutManager + } + + override fun provideListViewModel(): NormalListViewModel { + val factory = NormalListViewModel.Factory(HaloApp.getInstance().application, this) + return ViewModelProviders.of(this, factory).get(NormalListViewModel::class.java) as NormalListViewModel + } + + override fun provideDataObservable(page: Int): Observable> { + return RetrofitManager.getInstance(context).api.getCollectionVideo(UserManager.getInstance().userId) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/GameVideoInfo.kt b/app/src/main/java/com/gh/gamecenter/entity/GameVideoInfo.kt new file mode 100644 index 0000000000..27ad076b7c --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/entity/GameVideoInfo.kt @@ -0,0 +1,12 @@ +package com.gh.gamecenter.entity + +import com.google.gson.annotations.SerializedName + +data class GameVideoInfo(@SerializedName("game_name") + val gameName: String = "", + @SerializedName("game_icon") + val gameIcon: String = "", + @SerializedName("video_count") + val videoCount: Int = 0, + @SerializedName("vote_count") + val likeCount: Int = 0) \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java index fb9fb4b3b8..17ddf02547 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java @@ -44,6 +44,7 @@ import com.gh.common.util.SPUtils; import com.gh.common.util.ShareUtils; import com.gh.common.view.DrawableView; import com.gh.download.DownloadManager; +import com.gh.gamecenter.BuildConfig; import com.gh.gamecenter.R; import com.gh.gamecenter.SuggestionActivity; import com.gh.gamecenter.adapter.viewholder.DetailViewHolder; @@ -64,6 +65,7 @@ import com.gh.gamecenter.manager.PackagesManager; import com.gh.gamecenter.mvvm.Status; import com.gh.gamecenter.normal.NormalFragment; import com.gh.gamecenter.suggest.SuggestType; +import com.gh.gamecenter.video.game.GameVideoActivity; import com.google.android.material.appbar.AppBarLayout; import com.halo.assistant.HaloApp; import com.lightgame.adapter.BaseFragmentPagerAdapter; @@ -682,6 +684,11 @@ public class GameDetailFragment extends NormalFragment { ratingScoreAverage.setTextSize(10F); } + if (BuildConfig.DEBUG) { + ratingScoreContainer.setOnClickListener(v -> { + startActivity(GameVideoActivity.getIntent(getContext(), mGameEntity.getId())); + }); + } } @Override diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/video/MyVideoAdapter.kt b/app/src/main/java/com/gh/gamecenter/personalhome/video/MyVideoAdapter.kt index c52c831ae4..29dda7c718 100644 --- a/app/src/main/java/com/gh/gamecenter/personalhome/video/MyVideoAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personalhome/video/MyVideoAdapter.kt @@ -6,11 +6,11 @@ import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.gh.common.constant.ItemViewType import com.gh.common.util.ImageUtils +import com.gh.common.util.toSimpleCount import com.gh.gamecenter.R import com.gh.gamecenter.adapter.viewholder.FooterViewHolder import com.gh.gamecenter.baselist.ListAdapter import com.gh.gamecenter.baselist.NormalListViewModel -import com.gh.gamecenter.databinding.VideoDraftItemBinding import com.gh.gamecenter.databinding.VideoItemBinding import com.gh.gamecenter.entity.MyVideoEntity import com.gh.gamecenter.video.VideoItemViewHolder @@ -47,7 +47,7 @@ class MyVideoAdapter(context: Context, if (holder is VideoItemViewHolder) { val entity = mEntityList[position] ImageUtils.display(holder.binding.videoCover, entity.poster) - holder.binding.videoLikeCount.text = entity.vote.toString() + holder.binding.videoLikeCount.text = entity.vote.toSimpleCount() } else if (holder is FooterViewHolder) { holder.initFooterViewHolder(mViewModel, mIsLoading, mIsNetworkError, mIsOver) } diff --git a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java index c2ddf3f6c3..3076534d76 100644 --- a/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java +++ b/app/src/main/java/com/gh/gamecenter/retrofit/service/ApiService.java @@ -10,6 +10,7 @@ import com.gh.gamecenter.entity.FollowersOrFansEntity; import com.gh.gamecenter.entity.GameDetailEntity; import com.gh.gamecenter.entity.GameDigestEntity; import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.entity.GameVideoInfo; import com.gh.gamecenter.entity.ImageInfoEntity; import com.gh.gamecenter.entity.LibaoDetailEntity; import com.gh.gamecenter.entity.LibaoEntity; @@ -1903,6 +1904,24 @@ public interface ApiService { @GET("users/{user_id}/videos") Observable> getMyVideo(@Path("user_id") String userId); + /** + * 获取用户的视频收藏列表 + */ + @GET("users/{user_id}/favorites/videos") + Observable> getCollectionVideo(@Path("user_id") String userId); + + /** + * 获取游戏视频合集 + */ + @GET("games/{game_id}/videos") + Observable> getGameVideo(@Path("game_id") String gameId, @Query("sort") String sort); + + /** + * 获取游戏视频相关信息 + */ + @GET("games/{game_id}/video_infos") + Single getGameVideoInfo(@Path("game_id") String gameId); + /** * 记录用户成功安装应用(用于玩过的游戏) */ diff --git a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoActivity.kt b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoActivity.kt new file mode 100644 index 0000000000..4f9b64532a --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoActivity.kt @@ -0,0 +1,95 @@ +package com.gh.gamecenter.video.game + +import android.content.Context +import android.content.Intent +import android.graphics.Color +import android.os.Bundle +import androidx.databinding.DataBindingUtil +import androidx.fragment.app.Fragment +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProviders +import androidx.work.ListenableWorker +import com.gh.base.BaseActivity +import com.gh.base.adapter.FragmentAdapter +import com.gh.common.util.* +import com.gh.gamecenter.R +import com.gh.gamecenter.databinding.ActivityVideoGameBinding +import com.gh.gamecenter.mvvm.Status + +class GameVideoActivity : BaseActivity() { + + private lateinit var mBinding: ActivityVideoGameBinding + private lateinit var mViewModel: GameVideoViewModel + + override fun getLayoutId(): Int { + return R.layout.activity_video_game + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + // toolbar & status bar + setNavigationTitle("视频合集") + setStatusBarColor(R.color.text_181927.toColor()) + mToolbar.setBackgroundColor(R.color.text_181927.toColor()) + mTitleTv.setTextColor(Color.WHITE) + + // viewpager & tab content + val gameId = intent.getStringExtra(EntranceUtils.KEY_GAMEID) + val titles = arrayListOf("最热", "最新") + val fragments = ArrayList() + + val hottest = GameVideoFragment() + val hottestBundle = Bundle() + hottestBundle.putString(EntranceUtils.KEY_GAMEID, gameId) + hottestBundle.putString(EntranceUtils.KEY_SORT, "vote_recently:-1") + hottest.arguments = hottestBundle + fragments.add(hottest) + + val newest = GameVideoFragment() + val newestBundle = Bundle() + newestBundle.putString(EntranceUtils.KEY_GAMEID, gameId) + newestBundle.putString(EntranceUtils.KEY_SORT, "time.upload:-1") + newest.arguments = newestBundle + fragments.add(newest) + + // view + mBinding = DataBindingUtil.bind(mContentView)!! + mBinding.viewpager.offscreenPageLimit = fragments.size + mBinding.viewpager.adapter = FragmentAdapter(supportFragmentManager, fragments, titles) + mBinding.tabLayout.setupWithViewPager(mBinding.viewpager) + mBinding.tabIndicator.setupWithTabLayout(mBinding.tabLayout) + mBinding.tabIndicator.setupWithViewPager(mBinding.viewpager) + mBinding.tabIndicator.setIndicatorWidth(20) + + // view model + val factory = GameVideoViewModel.Factory(application, gameId) + mViewModel = ViewModelProviders.of(this, factory).get(GameVideoViewModel::class.java) + mViewModel.gameViewInfo.observeNonNull(this, callback = { + if (it.status == Status.SUCCESS) { + ImageUtils.displayIcon(mBinding.gameIcon, it.data!!.gameIcon) + mBinding.gameName.text = it.data.gameName + mBinding.likeCount.text = getString( + R.string.game_video_count, + "获赞", + NumberUtils.transSimpleCount(it.data.likeCount)).fromHtml() + mBinding.videoCount.text = getString( + R.string.game_video_count, + "视频", + NumberUtils.transSimpleCount(it.data.videoCount)).fromHtml() + } else if (it.status == Status.ERROR) { + // do something + } + }) + } + + companion object { + + @JvmStatic + fun getIntent(context: Context, gameId: String): Intent { + val intent = Intent(context, GameVideoActivity::class.java) + intent.putExtra(EntranceUtils.KEY_GAMEID, gameId) + return intent + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoAdapter.kt b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoAdapter.kt new file mode 100644 index 0000000000..66fef50b64 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoAdapter.kt @@ -0,0 +1,54 @@ +package com.gh.gamecenter.video.game + +import android.content.Context +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.gh.common.constant.ItemViewType +import com.gh.common.util.ImageUtils +import com.gh.common.util.toSimpleCount +import com.gh.gamecenter.R +import com.gh.gamecenter.adapter.viewholder.FooterViewHolder +import com.gh.gamecenter.baselist.ListAdapter +import com.gh.gamecenter.baselist.NormalListViewModel +import com.gh.gamecenter.databinding.VideoItemBinding +import com.gh.gamecenter.entity.MyVideoEntity +import com.gh.gamecenter.video.VideoItemViewHolder + +class GameVideoAdapter(context: Context, + val mViewModel: NormalListViewModel): ListAdapter(context){ + + override fun getItemViewType(position: Int): Int { + if (position == itemCount -1) return ItemViewType.ITEM_FOOTER + return ItemViewType.ITEM_BODY + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + val view: View + return when (viewType) { + ItemViewType.ITEM_FOOTER -> { + view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false) + FooterViewHolder(view) + } + else -> { + view = mLayoutInflater.inflate(R.layout.video_item, parent, false) + return VideoItemViewHolder(VideoItemBinding.bind(view)) + } + } + } + + override fun getItemCount(): Int { + return if (mEntityList == null || mEntityList.isEmpty()) 0 else mEntityList.size + FOOTER_ITEM_COUNT + + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + if (holder is VideoItemViewHolder) { + val entity = mEntityList[position] + ImageUtils.display(holder.binding.videoCover, entity.poster) + holder.binding.videoLikeCount.text = entity.vote.toSimpleCount() + } else if (holder is FooterViewHolder) { + holder.initFooterViewHolder(mViewModel, mIsLoading, mIsNetworkError, mIsOver) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoFragment.kt b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoFragment.kt new file mode 100644 index 0000000000..17b4cbc7a5 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoFragment.kt @@ -0,0 +1,58 @@ +package com.gh.gamecenter.video.game + +import android.os.Bundle +import android.view.View +import androidx.lifecycle.ViewModelProviders +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.gh.common.util.EntranceUtils +import com.gh.common.util.dip2px +import com.gh.common.view.GridSpacingItemDecoration +import com.gh.gamecenter.baselist.ListFragment +import com.gh.gamecenter.baselist.NormalListViewModel +import com.gh.gamecenter.entity.MyVideoEntity +import com.gh.gamecenter.retrofit.RetrofitManager +import com.halo.assistant.HaloApp +import io.reactivex.Observable + +class GameVideoFragment : ListFragment>() { + private var mAdapter: GameVideoAdapter?= null + + override fun provideListAdapter(): GameVideoAdapter { + if (mAdapter == null) { + mAdapter = GameVideoAdapter(context!!, mListViewModel) + } + return mAdapter!! + } + + override fun getItemDecoration(): RecyclerView.ItemDecoration { + return GridSpacingItemDecoration(3, 2F.dip2px(), false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + val gridLayoutManager = GridLayoutManager(context, 3) + gridLayoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() { + override fun getSpanSize(position: Int): Int { + return if (position == mAdapter!!.itemCount - 1) { + 3 + } else { + 1 + } + } + } + mListRv.layoutManager = gridLayoutManager + } + + override fun provideListViewModel(): NormalListViewModel { + val factory = NormalListViewModel.Factory(HaloApp.getInstance().application, this) + return ViewModelProviders.of(this, factory).get(NormalListViewModel::class.java) as NormalListViewModel + } + + override fun provideDataObservable(page: Int): Observable> { + val api = RetrofitManager.getInstance(context).api + val gameId = arguments?.getString(EntranceUtils.KEY_GAMEID) + val sort = arguments?.getString(EntranceUtils.KEY_SORT) + return api.getGameVideo(gameId, sort) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/video/game/GameVideoViewModel.kt b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoViewModel.kt new file mode 100644 index 0000000000..f390801fce --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/video/game/GameVideoViewModel.kt @@ -0,0 +1,48 @@ +package com.gh.gamecenter.video.game + +import android.annotation.SuppressLint +import android.app.Application +import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import com.gh.gamecenter.entity.GameVideoInfo +import com.gh.gamecenter.mvvm.Resource +import com.gh.gamecenter.retrofit.BiResponse +import com.gh.gamecenter.retrofit.RetrofitManager +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.schedulers.Schedulers + +class GameVideoViewModel(application: Application, val gameId: String) : AndroidViewModel(application) { + + val gameViewInfo = MutableLiveData>() + + init { + getGameVideoInfo() + } + + @SuppressLint("CheckResult") + private fun getGameVideoInfo() { + RetrofitManager + .getInstance(getApplication()) + .api.getGameVideoInfo(gameId) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : BiResponse() { + override fun onSuccess(data: GameVideoInfo) { + gameViewInfo.postValue(Resource.success(data)) + } + + override fun onFailure(exception: Exception) { + gameViewInfo.postValue(Resource.error(null)) + } + }) + } + + class Factory(private val mApplication: Application, + private val gameId: String) : ViewModelProvider.NewInstanceFactory() { + override fun create(modelClass: Class): T { + return GameVideoViewModel(mApplication, gameId) as T + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_video_game.xml b/app/src/main/res/layout/activity_video_game.xml new file mode 100644 index 0000000000..4b4e48f79d --- /dev/null +++ b/app/src/main/res/layout/activity_video_game.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/reuse_toolbar.xml b/app/src/main/res/layout/reuse_toolbar.xml index 1ef02cfd66..87d3f70b32 100644 --- a/app/src/main/res/layout/reuse_toolbar.xml +++ b/app/src/main/res/layout/reuse_toolbar.xml @@ -1,27 +1,26 @@ - + + android:id="@+id/normal_toolbar" + style="@style/Base_ToolbarStyle" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + android:id="@+id/normal_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:layout_marginLeft="50dp" + android:layout_marginRight="50dp" + android:gravity="center" + android:singleLine="true" + android:textColor="@color/black" + android:textSize="15sp" + android:textStyle="bold" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 69152e06b7..80394b39ab 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -116,5 +116,6 @@ #F10000 #EA3333 #FF700F + #181927 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5adb468e2d..e898ecf89d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -629,4 +629,6 @@ 视频上传服务准则 草稿保存之后!会关闭视频上传页面下次可在视频投稿-草稿箱]]>中继续上传 + + %1$s %2$s]]>