diff --git a/app/src/main/java/com/gh/common/view/MarqueeView.java b/app/src/main/java/com/gh/common/view/MarqueeView.java index 4a3d3bd2c6..234f4caf12 100644 --- a/app/src/main/java/com/gh/common/view/MarqueeView.java +++ b/app/src/main/java/com/gh/common/view/MarqueeView.java @@ -30,6 +30,7 @@ public class MarqueeView extends ViewFlipper { private int animDuration = 500; private int textSize = 14; private int textColor = 0xffffffff; + private boolean useSingleLineText = false; public MarqueeView(Context context, AttributeSet attrs) { super(context, attrs); @@ -118,6 +119,10 @@ public class MarqueeView extends ViewFlipper { tv.setText(text); tv.setTextColor(textColor); tv.setTextSize(textSize); + if (useSingleLineText) { + tv.setSingleLine(true); + tv.setEllipsize(TextUtils.TruncateAt.END); + } return tv; } @@ -127,6 +132,10 @@ public class MarqueeView extends ViewFlipper { start(); } + public void enableSingleLineText() { + useSingleLineText = true; + } + public List getNotices() { return notices; } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt index 95d49aa2ae..bb1c1b2b87 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt @@ -197,6 +197,7 @@ class DescAdapter(context: Context, detailEntity.shouldBoundTogetherWithPreviousItem, detailEntity.shouldBoundTogetherWithNextItem) + viewHolder.binding.gamedetailItemNotice.enableSingleLineText() viewHolder.binding.gamedetailItemNotice.setOnClickListener { val index = viewHolder.binding.gamedetailItemNotice.displayedChild DirectUtils.directToArticle(mContext, noticeList[index].id, StringUtils.buildString(mEntrance, "游戏详情[", gameName, "]:公告")) @@ -233,8 +234,7 @@ class DescAdapter(context: Context, detailEntity.shouldBoundTogetherWithPreviousItem, detailEntity.shouldBoundTogetherWithNextItem) - viewHolder.binding.contentTv.setTextWithHighlightedTextWrappedInsideWrapper(customColumn.des - ?: "", copyClickedText = true) + viewHolder.binding.contentTv.setTextWithHighlightedTextWrappedInsideWrapper(customColumn.des ?: "") viewHolder.binding.recyclerview.isNestedScrollingEnabled = false viewHolder.binding.recyclerview.layoutManager = if (customColumn.showInfoTagDes == true) { @@ -266,6 +266,7 @@ class DescAdapter(context: Context, DirectUtils.directToLinkPage(mContext, customColumn.nameLink!!, StringUtils.buildString(mEntrance, "游戏详情[", gameName, "]:自定义栏目"), "") } + viewHolder.binding.linkHintIv.setOnClickListener { viewHolder.binding.linkHintTv.performClick() } viewHolder.binding.linkHintArrowIv.setOnClickListener { viewHolder.binding.linkHintTv.performClick() } viewHolder.binding.linkHintTv.setOnClickListener { MtaHelper.onEvent("游戏详情_新", "自定义栏目右上角跳转", "${gameName}-${customColumn.name}-${customColumn.link?.value}") @@ -290,8 +291,7 @@ class DescAdapter(context: Context, viewHolder.binding.contentTv.setExpandMaxLines(maxDesLines) viewHolder.binding.contentTv.setIsExpanded(Int.MAX_VALUE == maxDesLines) viewHolder.binding.customColumn = customColumn - viewHolder.binding.contentTv.setTextWithHighlightedTextWrappedInsideWrapper(customColumn.des - ?: "", copyClickedText = true) + viewHolder.binding.contentTv.setTextWithHighlightedTextWrappedInsideWrapper(customColumn.des ?: "") viewHolder.binding.recyclerview.isNestedScrollingEnabled = false viewHolder.binding.recyclerview.layoutManager = if (customColumn.showInfoTagDes == true) { LinearLayoutManager(mContext) @@ -313,6 +313,7 @@ class DescAdapter(context: Context, MtaHelper.onEvent("游戏详情_新", "自定义栏目正文_全部", "${gameName}-${customColumn.name}") } } + viewHolder.binding.linkImageIv.setOnClickListener { MtaHelper.onEvent("游戏详情_新", "自定义栏目正文_图片", "${gameName}-${customColumn.name}") viewHolder.binding.titleHintTv.performClick() @@ -322,6 +323,7 @@ class DescAdapter(context: Context, DirectUtils.directToLinkPage(mContext, customColumn.nameLink!!, StringUtils.buildString(mEntrance, "游戏详情[", gameName, "]:自定义栏目"), "") } + viewHolder.binding.linkHintIv.setOnClickListener { viewHolder.binding.linkHintTv.performClick() } viewHolder.binding.linkHintArrowIv.setOnClickListener { viewHolder.binding.linkHintTv.performClick() } viewHolder.binding.linkHintTv.setOnClickListener { MtaHelper.onEvent("游戏详情_新", "自定义栏目右上角跳转", "${gameName}-${customColumn.name}-${customColumn.link?.value}") diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt index 1f6ca8f7e0..4a57f9bdeb 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescViewModel.kt @@ -15,7 +15,6 @@ import com.gh.common.util.* import com.gh.gamecenter.R import com.gh.gamecenter.entity.ErrorEntity import com.gh.gamecenter.entity.GameEntity -import com.gh.gamecenter.entity.LinkEntity import com.gh.gamecenter.entity.SubjectEntity import com.gh.gamecenter.gamedetail.entity.CustomColumn import com.gh.gamecenter.gamedetail.entity.DetailEntity @@ -215,7 +214,8 @@ class DescViewModel(application: Application, rawItem.type = DetailEntity.Type.CUSTOM_COLUMN.value rawItem.customColumn = CustomColumn( name = "游戏简介", - nameLink = LinkEntity(icon = UriUtil.getUriForResourceId(R.drawable.ic_game_desc).toString()), + order = 1, + nameIcon = UriUtil.getUriForResourceId(R.drawable.ic_game_desc).toString(), des = rawItem.des, showDesRowNum = 2) break diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/entity/DetailEntity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/entity/DetailEntity.kt index 4e19a8d464..9cf026ede2 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/entity/DetailEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/entity/DetailEntity.kt @@ -78,7 +78,7 @@ data class CustomColumn( @SerializedName("name_link") var nameLink: LinkEntity? = null, var link: LinkEntity? = null, - var order: Long? = 0, + var order: Long? = 0, // 权重 var title: Title? = null, var des: String? = "", @SerializedName("show_des_type") diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListFragment.kt index 3e319c9b05..2c562f1d87 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/history/HistoryApkListFragment.kt @@ -2,8 +2,11 @@ package com.gh.gamecenter.gamedetail.history import android.graphics.drawable.InsetDrawable import android.os.Bundle +import android.view.View +import android.widget.TextView import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView +import butterknife.BindView import com.gh.common.util.* import com.gh.common.view.CustomDividerItemDecoration import com.gh.download.DownloadManager @@ -24,6 +27,9 @@ class HistoryApkListFragment : ListFragment private var mAdapter: HistoryApkListAdapter? = null private var mViewModel: HistoryApkListViewModel? = null + @BindView(R.id.reuse_tv_none_data) + lateinit var noDataTv: TextView + private val dataWatcher = object : DataWatcher() { override fun onDataChanged(downloadEntity: DownloadEntity) { mAdapter?.notifyItemByDownload(downloadEntity) @@ -38,7 +44,13 @@ class HistoryApkListFragment : ListFragment } } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + noDataTv.text = "暂时还没有数据喔" + } + override fun onResume() { + if (isEverPause && mAdapter != null) mAdapter?.notifyDataSetChanged() super.onResume() DownloadManager.getInstance(context).addObserver(dataWatcher) } diff --git a/app/src/main/java/com/gh/gamecenter/receiver/DownloadReceiver.java b/app/src/main/java/com/gh/gamecenter/receiver/DownloadReceiver.java index 479d1e32eb..c98fae810f 100644 --- a/app/src/main/java/com/gh/gamecenter/receiver/DownloadReceiver.java +++ b/app/src/main/java/com/gh/gamecenter/receiver/DownloadReceiver.java @@ -3,20 +3,10 @@ package com.gh.gamecenter.receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; -import android.os.Bundle; -import androidx.core.content.ContextCompat; -import com.gh.common.util.RunningUtils; -import com.gh.gamecenter.DownloadManagerActivity; -import com.gh.gamecenter.MainActivity; -import com.gh.gamecenter.SplashScreenActivity; -import com.gh.gamecenter.eventbus.EBSkip; - -import org.greenrobot.eventbus.EventBus; +import com.gh.common.util.DirectUtils; import static com.gh.common.util.EntranceUtils.ENTRANCE_DOWNLOAD; -import static com.gh.common.util.EntranceUtils.KEY_ENTRANCE; -import static com.gh.common.util.EntranceUtils.KEY_TO; /** * Created by LGT on 2016/10/10. @@ -26,36 +16,6 @@ public class DownloadReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - - if (RunningUtils.isRunning(context)) { - // 助手正在运行 - if (RunningUtils.isEqualsTop(context, DownloadManagerActivity.class.getName())) { - if (RunningUtils.isApplicationBroughtToBackground(context)) { - // 这里是指从后台返回到前台 前两个的是关键 - - Intent download = new Intent(context, DownloadManagerActivity.class); - Intent main = new Intent(context, MainActivity.class); - main.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); - main.setAction(Intent.ACTION_MAIN); - main.addCategory(Intent.CATEGORY_DEFAULT); - ContextCompat.startActivities(context, new Intent[]{main, download}); - } - // 切换到游戏下载fragment - EventBus.getDefault().post(new EBSkip(DownloadManagerActivity.TAG, DownloadManagerActivity.INDEX_DOWNLOAD)); - } else { - Intent downloadIntent = DownloadManagerActivity.getDownloadMangerIntent(context, null, ENTRANCE_DOWNLOAD); - downloadIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(downloadIntent); - } - - - } else { - // 助手未在运行 - Bundle bundle = new Bundle(); - bundle.putString(KEY_TO, DownloadManagerActivity.TAG); - intent.putExtra(KEY_ENTRANCE, ENTRANCE_DOWNLOAD); - context.startActivity(SplashScreenActivity.getSplashScreenIntent(context, bundle)); - } + DirectUtils.directToDownloadManager(context, ENTRANCE_DOWNLOAD); } - } diff --git a/app/src/main/java/com/halo/assistant/HaloApp.java b/app/src/main/java/com/halo/assistant/HaloApp.java index 4be878187e..2abe9b310d 100644 --- a/app/src/main/java/com/halo/assistant/HaloApp.java +++ b/app/src/main/java/com/halo/assistant/HaloApp.java @@ -193,6 +193,7 @@ public class HaloApp extends TinkerAppLike { }); } + // todo 动态注册和静态注册并行的话会触发多次回调 // 3.5 开始将 targetSdk 升级至 26,原来写在 Manifest 的部分 receiver 由于系统限制需要换成在运行时注册 private void initReceiver() { DownloadReceiver downloadReceiver = new DownloadReceiver(); diff --git a/app/src/main/res/layout/gamedetail_item_custom_column.xml b/app/src/main/res/layout/gamedetail_item_custom_column.xml index 099ac518bd..32ebca5923 100644 --- a/app/src/main/res/layout/gamedetail_item_custom_column.xml +++ b/app/src/main/res/layout/gamedetail_item_custom_column.xml @@ -63,7 +63,8 @@ app:roundedCornerRadius="5dp" app:viewAspectRatio="2" tools:background="@color/placeholder_bg" - tools:layout_width="match_parent" /> + tools:layout_width="match_parent" + tools:visibility="visible" /> - + app:layout_goneMarginLeft="0dp"> - + + + + + @@ -158,7 +174,9 @@ android:layout_marginTop="14dp" android:gravity="center_vertical" android:orientation="horizontal" - app:layout_constraintTop_toBottomOf="@id/linkTextContainer"> + android:visibility="gone" + app:layout_constraintTop_toBottomOf="@id/linkTextContainer" + tools:visibility="visible"> + tools:text="公告文章、权重大于0的自定义栏目和介绍文案,这三类版块内容可组合拼接为一个整体部分,即拼接内容可为其中两种(如公告文章+介绍文案),也可为全部三种(包括多个自定义栏目内容),其中公告文章和自定义栏目之间、公告文章和介绍文案之间、自定义栏目和介绍文案之间加上分割线隔开" + tools:visibility="visible" /> - + app:layout_goneMarginLeft="0dp"> - + + + + + diff --git a/app/src/main/res/layout/menu_action_download.xml b/app/src/main/res/layout/menu_action_download.xml index fe535195ef..2d098bb499 100644 --- a/app/src/main/res/layout/menu_action_download.xml +++ b/app/src/main/res/layout/menu_action_download.xml @@ -1,5 +1,6 @@ - @@ -7,15 +8,17 @@ android:id="@+id/menu_download_iv" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_centerInParent="true" - android:src="@drawable/toolbar_download" /> + android:src="@drawable/toolbar_download" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent" /> - \ No newline at end of file + android:visibility="visible" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="@id/menu_download_iv" /> + + \ No newline at end of file