diff --git a/app/src/main/java/com/gh/common/constant/Config.java b/app/src/main/java/com/gh/common/constant/Config.java index 9f42027989..8aff149803 100644 --- a/app/src/main/java/com/gh/common/constant/Config.java +++ b/app/src/main/java/com/gh/common/constant/Config.java @@ -58,7 +58,7 @@ public class Config { for (SettingsEntity.Download entity : getSettings().getDownload()) { if ("all".equals(entity.getGame())) { - if (entity.isPluginfy() && "normal".equals(entity.getPolicy()) && filterTime(entity.getTime())) { + if (entity.getPluginfy() && "normal".equals(entity.getPolicy()) && filterTime(entity.getTime())) { return true; } } @@ -108,13 +108,13 @@ public class Config { for (SettingsEntity.Download entity : getSettings().getDownload()) { if (gameId.equals(entity.getGame())) { - if (entity.isPluginfy() && filterTime(entity.getTime())) { + if (entity.getPluginfy() && filterTime(entity.getTime())) { return true; } else { return false; } } else if ("all".equals(entity.getGame())) { - if (entity.isPluginfy() && filterTime(entity.getTime())) { + if (entity.getPluginfy() && filterTime(entity.getTime())) { return true; } } @@ -129,7 +129,7 @@ public class Config { for (SettingsEntity.Download entity : getSettings().getDownload()) { if ("all".equals(entity.getGame())) { - if (entity.isPluginfy() && filterTime(entity.getTime())) { + if (entity.getPluginfy() && filterTime(entity.getTime())) { return true; } } diff --git a/app/src/main/java/com/gh/common/util/AdHelper.kt b/app/src/main/java/com/gh/common/util/AdHelper.kt new file mode 100644 index 0000000000..a6f764d31d --- /dev/null +++ b/app/src/main/java/com/gh/common/util/AdHelper.kt @@ -0,0 +1,37 @@ +package com.gh.common.util + +import com.gh.common.constant.Config +import com.gh.gamecenter.entity.SettingsEntity + +object AdHelper { + + // 搜索为空/求版本/意见反馈-功能收录/发现 + const val LOCATION_SEARCH_EMPTY = "search_empty" + const val LOCATION_GAME_REQUEST_VERSION = "game_request_version" + const val LOCATION_SUGGESTION_FUNCTION = "suggestion_function" + const val LOCATION_DISCOVER = "discover" + + fun getAd(location: String): SettingsEntity.AD? { + val adList = Config.getSettings().adList ?: return null + + for (ad in adList) { + if (ad.location == location) return ad + } + return null + } + + fun getDiscoverAds(): List { + val adList = Config.getSettings().adList ?: return listOf() + + val discoverAdList = arrayListOf() + + for (ad in adList) { + if (ad.location == LOCATION_DISCOVER) { + discoverAdList.add(ad) + } + } + + return discoverAdList + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/util/CompressImageUtils.kt b/app/src/main/java/com/gh/common/util/CompressImageUtils.kt index f3ac8dc59a..6c20279ff3 100644 --- a/app/src/main/java/com/gh/common/util/CompressImageUtils.kt +++ b/app/src/main/java/com/gh/common/util/CompressImageUtils.kt @@ -142,12 +142,11 @@ object CompressImageUtils { } fun getImageSetting(): SettingsEntity.Image { - var settings = Config.getSettings() + val settings = Config.getSettings() if (settings == null && settings?.image != null) { - return settings.image + return settings.image!! } - settings = SettingsEntity() - val image = settings.Image() + val image = SettingsEntity.Image() image.processLimitSize = compressLimitSize image.size = defaultCompressBorder image.ratio = defaultRatio diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt index 7406223364..341e07a600 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -92,6 +92,8 @@ object DirectUtils { "web" -> directToWebView(context, url = linkEntity.link!!, entrance = entrance) + "qq" -> directToQqConversation(context, linkEntity.link) + else -> DialogUtils.showLowVersionDialog(context) } } diff --git a/app/src/main/java/com/gh/common/util/MtaHelper.kt b/app/src/main/java/com/gh/common/util/MtaHelper.kt index c888363567..2a851e5c28 100644 --- a/app/src/main/java/com/gh/common/util/MtaHelper.kt +++ b/app/src/main/java/com/gh/common/util/MtaHelper.kt @@ -14,6 +14,12 @@ object MtaHelper { @JvmStatic fun onEvent(eventId: String, vararg kv: String?) { val prop = Properties() + + if (kv.size == 1) { + prop.setProperty(kv[0], "") + StatService.trackCustomKVEvent(HaloApp.getInstance().application, eventId, prop) + } + for (i in kv.indices) { if (i % 2 != 0) { val key = kv[i - 1] @@ -23,6 +29,7 @@ object MtaHelper { } } } + Utils.log("MTA","$eventId + [${kv.joinToString(" , ")}]") StatService.trackCustomKVEvent(HaloApp.getInstance().application, eventId, prop) } diff --git a/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java index 679cd95e01..fc598abc37 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java @@ -55,8 +55,8 @@ public class SuggestSelectActivity extends BaseActivity { mSettings = Config.getSettings(); if (mSettings != null && mSettings.getSupport() != null && - !TextUtils.isEmpty(mSettings.getSupport().getqQun())) { - qQun.setText(mSettings.getSupport().getqQun()); + !TextUtils.isEmpty(mSettings.getSupport().getQQun())) { + qQun.setText(mSettings.getSupport().getQQun()); } } @@ -86,8 +86,8 @@ public class SuggestSelectActivity extends BaseActivity { case R.id.suggest_qqun_rl: String groupNumber = "vd754P2_uNUJqDcgX4V-pyXEGZZVH0DE"; if (mSettings != null && mSettings.getSupport() != null && - !TextUtils.isEmpty(mSettings.getSupport().getqQunKey())) { - groupNumber = mSettings.getSupport().getqQunKey(); + !TextUtils.isEmpty(mSettings.getSupport().getQQunKey())) { + groupNumber = mSettings.getSupport().getQQunKey(); } DirectUtils.directToQqGroup(this, groupNumber); // Q群:367541038 KEY return; diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java index 32721e777a..7ff2822ee4 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java @@ -32,8 +32,10 @@ import com.gh.base.OnListClickListener; import com.gh.base.OnRequestCallBackListener; import com.gh.base.fragment.WaitingDialogFragment; import com.gh.common.im.ImManager; +import com.gh.common.util.AdHelper; import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.DialogUtils; +import com.gh.common.util.DirectUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.EntranceUtils; import com.gh.common.util.ImageUtils; @@ -41,6 +43,7 @@ import com.gh.common.util.NetworkUtils; import com.gh.common.util.PackageUtils; import com.gh.common.util.UploadImageUtils; import com.gh.gamecenter.entity.InstallGameEntity; +import com.gh.gamecenter.entity.SettingsEntity; import com.gh.gamecenter.entity.SuggestionTypeEntity; import com.gh.gamecenter.entity.UserInfoEntity; import com.gh.gamecenter.manager.UserManager; @@ -123,6 +126,8 @@ public class SuggestionActivity extends BaseActivity implements OnRequestCallBac TextView mTypeName; @BindView(R.id.suggest_email_name) TextView mEmailName; + @BindView(R.id.tv_ad) + TextView mAdTv; public static final int MEDIA_STORE_REQUEST = 1; public static final String SUGGESTION_HINT_TYPE = "SUGGESTION_HINT_TYPE"; @@ -227,6 +232,19 @@ public class SuggestionActivity extends BaseActivity implements OnRequestCallBac setNavigationTitle("意见反馈-" + mSuggestType.getType()); + SettingsEntity.AD ad = AdHelper.INSTANCE.getAd(AdHelper.LOCATION_SUGGESTION_FUNCTION); + if (mSuggestType == SuggestType.functionSuggest + && ad != null) { + mAdTv.setVisibility(View.VISIBLE); + mAdTv.setText(ad.getTitle()); + mAdTv.setOnClickListener(v -> { + DirectUtils.directToLinkPage(this, + ad.toLinkEntity(), + "意见反馈", + "意见反馈" + mSuggestType.getType()); + }); + } + sp = PreferenceManager.getDefaultSharedPreferences(this); // 意见反馈上传图片列表 @@ -361,13 +379,10 @@ public class SuggestionActivity extends BaseActivity implements OnRequestCallBac 0, DisplayUtils.dip2px(SuggestionActivity.this, 12)); container.addView(reportTv); - reportTv.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - dialog.cancel(); - mSuggestContentEt.setText((mSuggestContentEt.getText().toString() + reportTv.getText().toString())); - mSuggestContentEt.setSelection(mSuggestContentEt.getText().length()); - } + reportTv.setOnClickListener(v -> { + dialog.cancel(); + mSuggestContentEt.setText((mSuggestContentEt.getText().toString() + reportTv.getText().toString())); + mSuggestContentEt.setSelection(mSuggestContentEt.getText().length()); }); } diff --git a/app/src/main/java/com/gh/gamecenter/discover/DiscoverFragment.kt b/app/src/main/java/com/gh/gamecenter/discover/DiscoverFragment.kt index a53c23a07e..48ff2b43a8 100644 --- a/app/src/main/java/com/gh/gamecenter/discover/DiscoverFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/discover/DiscoverFragment.kt @@ -1,18 +1,19 @@ package com.gh.gamecenter.discover +import android.databinding.DataBindingUtil import android.os.Bundle import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout import android.widget.RelativeLayout import butterknife.BindView import butterknife.OnClick import com.facebook.drawee.view.SimpleDraweeView import com.gh.base.fragment.BaseFragment import com.gh.common.AppExecutor -import com.gh.common.util.CheckLoginUtils -import com.gh.common.util.DataCollectionUtils -import com.gh.common.util.ImageUtils -import com.gh.common.util.MtaHelper +import com.gh.common.util.* import com.gh.gamecenter.* +import com.gh.gamecenter.databinding.PieceDiscoverItemBinding import com.gh.gamecenter.db.GameTrendsDao import com.gh.gamecenter.eventbus.EBReuse import com.gh.gamecenter.manager.UserManager @@ -28,6 +29,8 @@ class DiscoverFragment : BaseFragment() { lateinit var mDiscoverGameUnread: RelativeLayout @BindView(R.id.discover_game_unread_icon) lateinit var mDiscoverGameUnreadIcon: SimpleDraweeView + @BindView(R.id.discover_container) + lateinit var mDiscoverContainer: LinearLayout private val mGameTrendsDao by lazy { GameTrendsDao(context) } @@ -40,6 +43,37 @@ class DiscoverFragment : BaseFragment() { if (!CheckLoginUtils.isLogin()) { mDiscoverGameUnread.visibility = View.GONE } + + val ads = AdHelper.getDiscoverAds() + if (ads.isNotEmpty()) { + for ((index, ad) in ads.withIndex()) { + val divider = View(requireActivity()) + val lp = view.layoutParams + lp.width = ViewGroup.LayoutParams.MATCH_PARENT + lp.height = if (index % 2 == 0) { + DisplayUtils.dip2px(1f) + } else { + DisplayUtils.dip2px(8f) + } + divider.layoutParams = lp + + mDiscoverContainer.addView(divider) + + val binding: PieceDiscoverItemBinding = + DataBindingUtil.inflate(requireActivity().layoutInflater, + R.layout.piece_discover_item, + null, + false) + binding.ad = ad + val discoverAdView = binding.root + + discoverAdView.setOnClickListener { + MtaHelper.onEvent("发现", "广告-${ad.title}") + DirectUtils.directToLinkPage(requireContext(), ad.toLinkEntity(), "(首页)", "(首页:发现)") + } + mDiscoverContainer.addView(discoverAdView) + } + } } @OnClick(R.id.discover_game_trends, diff --git a/app/src/main/java/com/gh/gamecenter/entity/SettingsEntity.java b/app/src/main/java/com/gh/gamecenter/entity/SettingsEntity.java deleted file mode 100644 index d22f29a039..0000000000 --- a/app/src/main/java/com/gh/gamecenter/entity/SettingsEntity.java +++ /dev/null @@ -1,372 +0,0 @@ -package com.gh.gamecenter.entity; - -import com.google.gson.annotations.SerializedName; - -import java.util.List; - -/** - * Created by khy on 26/03/18. - */ - -public class SettingsEntity { - - private List download; - - private Suggestion suggestion; - - private Search search; - - private CommunityEntity community; - - private Image image; - - private Support support; - - @SerializedName("community_entrance") - private String communityEntrance; - - @SerializedName("game_comment_blacklist") - private List gameCommentBlackList; - - public List getDownload() { - return download; - } - - public void setDownload(List download) { - this.download = download; - } - - public Suggestion getSuggestion() { - return suggestion; - } - - public void setSuggestion(Suggestion suggestion) { - this.suggestion = suggestion; - } - - public Search getSearch() { - return search; - } - - public void setSearch(Search search) { - this.search = search; - } - - public CommunityEntity getCommunity() { - return community; - } - - public void setCommunity(CommunityEntity community) { - this.community = community; - } - - public Image getImage() { - return image; - } - - public void setImage(Image image) { - this.image = image; - } - - public String getCommunityEntrance() { - return communityEntrance; - } - - public void setCommunityEntrance(String communityEntrance) { - this.communityEntrance = communityEntrance; - } - - public Support getSupport() { - return support; - } - - public void setSupport(Support support) { - this.support = support; - } - - public List getGameCommentBlackList() { - return gameCommentBlackList; - } - - public void setGameCommentBlackList(List gameCommentBlackList) { - this.gameCommentBlackList = gameCommentBlackList; - } - - public class Download { - private String game; - - private String policy; - - private boolean pluginfy; - - private TimeEntity time; - - - public String getGame() { - return game; - } - - public void setGame(String game) { - this.game = game; - } - - public String getPolicy() { - return policy; - } - - public void setPolicy(String policy) { - this.policy = policy; - } - - public boolean isPluginfy() { - return pluginfy; - } - - public void setPluginfy(boolean pluginfy) { - this.pluginfy = pluginfy; - } - - public TimeEntity getTime() { - return time; - } - - public void setTime(TimeEntity time) { - this.time = time; - } - - public class TimeEntity { - long start; - - long end; - - public long getStart() { - return start; - } - - public void setStart(long start) { - this.start = start; - } - - public long getEnd() { - return end; - } - - public void setEnd(long end) { - this.end = end; - } - } - - - } - - public class Suggestion { - - private List plugin; - - private List game; - - private List libao; - - private List service; - - private List report; - - public List getPlugin() { - return plugin; - } - - public void setPlugin(List plugin) { - this.plugin = plugin; - } - - public List getGame() { - return game; - } - - public void setGame(List game) { - this.game = game; - } - - public List getLibao() { - return libao; - } - - public void setLibao(List libao) { - this.libao = libao; - } - - public List getService() { - return service; - } - - public void setService(List service) { - this.service = service; - } - - public List getReport() { - return report; - } - - public void setReport(List report) { - this.report = report; - } - } - - public class Search { - - @SerializedName("default") - private List defaultData; - - @SerializedName("remen") - private List remenData; - - public List getDefaultData() { - return defaultData; - } - - public void setDefaultData(List defaultData) { - this.defaultData = defaultData; - } - - public List getRemenData() { - return remenData; - } - - public void setRemenData(List remenData) { - this.remenData = remenData; - } - } - - public class Image { - @SerializedName("upload_limit_size") - private long uploadLimitSize; - - @SerializedName("process_limit_size") - private long processLimitSize; - - private int size; - - private int quality; - - private int ratio; - - private Oss oss; - - public long getUploadLimitSize() { - return uploadLimitSize; - } - - public void setUploadLimitSize(long uploadLimitSize) { - this.uploadLimitSize = uploadLimitSize; - } - - public long getProcessLimitSize() { - return processLimitSize; - } - - public void setProcessLimitSize(long processLimitSize) { - this.processLimitSize = processLimitSize; - } - - public int getSize() { - return size; - } - - public void setSize(int size) { - this.size = size; - } - - public int getQuality() { - return quality; - } - - public void setQuality(int quality) { - this.quality = quality; - } - - public int getRatio() { - return ratio; - } - - public void setRatio(int ratio) { - this.ratio = ratio; - } - - public Oss getOss() { - return oss; - } - - public void setOss(Oss oss) { - this.oss = oss; - } - } - - public class Oss { - private String jpeg; - - private String gif; - - @SerializedName("gif_thumb") - private String gitThumb; - - @SerializedName("gif_watermark") - private String gifWaterMark; - - public String getJpeg() { - return jpeg; - } - - public void setJpeg(String jpeg) { - this.jpeg = jpeg; - } - - public String getGif() { - return gif; - } - - public void setGif(String gif) { - this.gif = gif; - } - - public String getGitThumb() { - return gitThumb; - } - - public void setGitThumb(String gitThumb) { - this.gitThumb = gitThumb; - } - - public String getGifWaterMark() { - return gifWaterMark; - } - - public void setGifWaterMark(String gifWaterMark) { - this.gifWaterMark = gifWaterMark; - } - } - - public class Support { - @SerializedName("qq-group") - private String qQun; - - @SerializedName("qq-group-key") - private String qQunKey; - - public String getqQun() { - return qQun; - } - - public void setqQun(String qQun) { - this.qQun = qQun; - } - - public String getqQunKey() { - return qQunKey; - } - - public void setqQunKey(String qQunKey) { - this.qQunKey = qQunKey; - } - } - -} diff --git a/app/src/main/java/com/gh/gamecenter/entity/SettingsEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/SettingsEntity.kt new file mode 100644 index 0000000000..bc94a1ec69 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/entity/SettingsEntity.kt @@ -0,0 +1,79 @@ +package com.gh.gamecenter.entity + +import com.google.gson.annotations.SerializedName + +data class SettingsEntity( + var download: List? = listOf(), + var suggestion: Suggestion? = null, + var search: Search? = null, + var community: CommunityEntity? = null, + var image: Image? = null, + var support: Support? = null, + @SerializedName("community_entrance") + var communityEntrance: String? = "", + @SerializedName("game_comment_blacklist") + var gameCommentBlackList: List? = listOf(), + @SerializedName("ad") + var adList: List? = listOf()) { + + data class Support( + @SerializedName("qq-group") + var qQun: String? = "", + @SerializedName("qq-group-key") + var qQunKey: String? = "") + + data class Oss( + var jpeg: String? = "", + var gif: String? = "", + @SerializedName("gif_thumb") + var gitThumb: String? = "", + @SerializedName("gif_watermark") + var gifWaterMark: String? = "") + + data class Image( + @SerializedName("upload_limit_size") + var uploadLimitSize: Long = 0, + @SerializedName("process_limit_size") + var processLimitSize: Long = 0, + var size: Int = 0, + var quality: Int = 0, + var ratio: Int = 0, + var oss: Oss? = null) + + data class Search( + @SerializedName("default") + var defaultData: List? = listOf(), + @SerializedName("remen") + var remenData: List? = listOf()) + + data class Suggestion( + var plugin: List? = listOf(), + var game: List? = listOf(), + var libao: List? = listOf(), + var service: List? = listOf(), + var report: List? = listOf()) + + data class Download( + var game: String? = "", + var policy: String? = "", + var pluginfy: Boolean = false, + var time: TimeEntity? = null) { + class TimeEntity { + var start: Long = 0 + var end: Long = 0 + } + } + + data class AD( + var location: String? = "", + var image: String? = "", + var title: String? = "", + var type: String? = "", + var text: String? = "", + var link: String? = "") { + fun toLinkEntity(): LinkEntity { + return LinkEntity(title = title, image = image, link = link, type = type, text = text) + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java index e290526d31..6e852f8e4f 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java @@ -9,13 +9,14 @@ import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.Gravity; import android.view.View; -import android.view.ViewTreeObserver; import android.widget.LinearLayout; import android.widget.TextView; import com.gh.base.OnRequestCallBackListener; import com.gh.base.fragment.BaseFragment; import com.gh.common.exposure.ExposureListener; +import com.gh.common.util.AdHelper; +import com.gh.common.util.DirectUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.common.view.VerticalItemDecoration; @@ -23,6 +24,7 @@ import com.gh.download.DownloadManager; import com.gh.gamecenter.R; import com.gh.gamecenter.SuggestionActivity; import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.entity.SettingsEntity; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.suggest.SuggestType; import com.lightgame.download.DataWatcher; @@ -52,6 +54,8 @@ public class SearchGameDetailFragment extends BaseFragment implements OnRequestC View mSkipSuggestFunction; @BindView(R.id.reuse_nodata_skip_game) View mSkipSuggestGame; + @BindView(R.id.tv_ad) + TextView mAdTv; private String key; private String type; @@ -94,22 +98,19 @@ public class SearchGameDetailFragment extends BaseFragment implements OnRequestC initAdapter(); final View decorView = getActivity().getWindow().getDecorView(); - decorView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { - @Override - public void onGlobalLayout() { - Rect rect = new Rect(); - decorView.getWindowVisibleDisplayFrame(rect); - int screenHeight = decorView.getRootView().getHeight(); - int heightDifference = screenHeight - rect.bottom;//计算软键盘占有的高度 = 屏幕高度 - 视图可见高度 - if (heightDifference > 0) { - FragmentActivity activity = getActivity(); - if (activity != null) { - mSearchNoData.setGravity(Gravity.CENTER_HORIZONTAL); - mSearchNoData.setPadding(0, DisplayUtils.dip2px(activity, 10), 0, 0); - } - } else { - mSearchNoData.setGravity(Gravity.CENTER); + decorView.getViewTreeObserver().addOnGlobalLayoutListener(() -> { + Rect rect = new Rect(); + decorView.getWindowVisibleDisplayFrame(rect); + int screenHeight = decorView.getRootView().getHeight(); + int heightDifference = screenHeight - rect.bottom;//计算软键盘占有的高度 = 屏幕高度 - 视图可见高度 + if (heightDifference > 0) { + FragmentActivity activity = getActivity(); + if (activity != null) { + mSearchNoData.setGravity(Gravity.CENTER_HORIZONTAL); + mSearchNoData.setPadding(0, DisplayUtils.dip2px(activity, 10), 0, 0); } + } else { + mSearchNoData.setGravity(Gravity.CENTER); } }); } @@ -121,6 +122,7 @@ public class SearchGameDetailFragment extends BaseFragment implements OnRequestC mSearchLoading.setVisibility(View.VISIBLE); mSearchDetailRv.setVisibility(View.GONE); mSearchNoData.setVisibility(View.GONE); + mAdTv.setVisibility(View.GONE); mSearchNoConn.setVisibility(View.GONE); postDelayedRunnable(this::initAdapter, 1000); break; @@ -160,6 +162,7 @@ public class SearchGameDetailFragment extends BaseFragment implements OnRequestC mSearchLoading.setVisibility(View.GONE); mSearchDetailRv.setVisibility(View.VISIBLE); mSearchNoData.setVisibility(View.GONE); + mAdTv.setVisibility(View.GONE); mSearchNoConn.setVisibility(View.GONE); } @@ -173,6 +176,7 @@ public class SearchGameDetailFragment extends BaseFragment implements OnRequestC mSearchLoading.setVisibility(View.GONE); mSearchDetailRv.setVisibility(View.GONE); mSearchNoData.setVisibility(View.GONE); + mAdTv.setVisibility(View.GONE); mSearchNoConn.setVisibility(View.VISIBLE); } @@ -180,6 +184,14 @@ public class SearchGameDetailFragment extends BaseFragment implements OnRequestC public void loadEmpty() { mSearchLoading.setVisibility(View.GONE); mSearchDetailRv.setVisibility(View.GONE); + SettingsEntity.AD ad = AdHelper.INSTANCE.getAd(AdHelper.LOCATION_SEARCH_EMPTY); + if (ad != null) { + mAdTv.setText(ad.getTitle()); + mAdTv.setOnClickListener( v -> { + DirectUtils.directToLinkPage(requireContext(), ad.toLinkEntity(), mEntrance, "搜索"); + }); + mAdTv.setVisibility(View.VISIBLE); + } mSearchNoData.setVisibility(View.VISIBLE); mSearchNoConn.setVisibility(View.GONE); } diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragment.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragment.java index d2adced039..60767c5cf3 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragment.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameListFragment.java @@ -15,6 +15,8 @@ import android.widget.TextView; import com.gh.base.OnRequestCallBackListener; import com.gh.base.fragment.BaseFragment; import com.gh.common.exposure.ExposureListener; +import com.gh.common.util.AdHelper; +import com.gh.common.util.DirectUtils; import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.common.view.VerticalItemDecoration; @@ -22,6 +24,7 @@ import com.gh.download.DownloadManager; import com.gh.gamecenter.R; import com.gh.gamecenter.SuggestionActivity; import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.entity.SettingsEntity; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.suggest.SuggestType; import com.lightgame.download.DataWatcher; @@ -47,6 +50,8 @@ public class SearchGameListFragment extends BaseFragment implements OnRequestCal LinearLayout mSearchNoConn; @BindView(R.id.reuse_tv_none_data) TextView mSearchNoDataTv; + @BindView(R.id.tv_ad) + TextView mAdTv; private String key; private String type; @@ -107,13 +112,16 @@ public class SearchGameListFragment extends BaseFragment implements OnRequestCal } - @OnClick({R.id.reuse_no_connection, R.id.reuse_nodata_skip_function, R.id.reuse_nodata_skip_game}) + @OnClick({R.id.reuse_no_connection, + R.id.reuse_nodata_skip_function, + R.id.reuse_nodata_skip_game}) public void onClick(View view) { switch (view.getId()) { case R.id.reuse_no_connection: mSearchLoading.setVisibility(View.VISIBLE); mSearchRv.setVisibility(View.GONE); mSearchNoData.setVisibility(View.GONE); + mAdTv.setVisibility(View.GONE); mSearchNoConn.setVisibility(View.GONE); postDelayedRunnable(this::initAdapter, 1000); break; @@ -153,6 +161,7 @@ public class SearchGameListFragment extends BaseFragment implements OnRequestCal mSearchLoading.setVisibility(View.GONE); mSearchRv.setVisibility(View.VISIBLE); mSearchNoData.setVisibility(View.GONE); + mAdTv.setVisibility(View.GONE); mSearchNoConn.setVisibility(View.GONE); } @@ -166,6 +175,15 @@ public class SearchGameListFragment extends BaseFragment implements OnRequestCal mSearchLoading.setVisibility(View.GONE); mSearchRv.setVisibility(View.GONE); mSearchNoData.setVisibility(View.GONE); + mAdTv.setVisibility(View.GONE); + SettingsEntity.AD ad = AdHelper.INSTANCE.getAd(AdHelper.LOCATION_SEARCH_EMPTY); + if (ad != null) { + mAdTv.setText(ad.getTitle()); + mAdTv.setOnClickListener( v -> { + DirectUtils.directToLinkPage(requireContext(), ad.toLinkEntity(), mEntrance, "搜索"); + }); + mAdTv.setVisibility(View.VISIBLE); + } mSearchNoConn.setVisibility(View.VISIBLE); } diff --git a/app/src/main/java/com/halo/assistant/fragment/VoteFragment.java b/app/src/main/java/com/halo/assistant/fragment/VoteFragment.java index 499855dc23..fdd84250ec 100644 --- a/app/src/main/java/com/halo/assistant/fragment/VoteFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/VoteFragment.java @@ -1,20 +1,20 @@ package com.halo.assistant.fragment; import android.app.Dialog; -import android.content.DialogInterface; import android.os.Bundle; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; -import android.view.KeyEvent; import android.view.View; import android.view.Window; import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.TextView; +import com.gh.common.util.AdHelper; import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.DialogUtils; +import com.gh.common.util.DirectUtils; import com.gh.common.util.EntranceUtils; import com.gh.common.view.VerticalItemDecoration; import com.gh.gamecenter.R; @@ -24,6 +24,7 @@ import com.gh.gamecenter.baselist.ListFragment; import com.gh.gamecenter.baselist.LoadStatus; import com.gh.gamecenter.baselist.NormalListViewModel; import com.gh.gamecenter.entity.MeEntity; +import com.gh.gamecenter.entity.SettingsEntity; import com.gh.gamecenter.entity.VersionVoteEntity; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; @@ -50,6 +51,8 @@ import retrofit2.HttpException; public class VoteFragment extends ListFragment implements SwipeRefreshLayout.OnRefreshListener, VoteAdapter.OnAddVoteListener { + @BindView(R.id.tv_ad) + TextView mAdTv; @BindView(R.id.vote_add_tv) TextView mAddTv; @@ -86,6 +89,15 @@ public class VoteFragment extends ListFragment CheckLoginUtils.checkLogin(getContext(), "下载游戏-求版本-[添加选项]", this::showAddVoteDialog)); + + SettingsEntity.AD ad = AdHelper.INSTANCE.getAd(AdHelper.LOCATION_GAME_REQUEST_VERSION); + if (ad != null) { + mAdTv.setVisibility(View.VISIBLE); + mAdTv.setText(ad.getTitle()); + mAdTv.setOnClickListener(v -> { + DirectUtils.directToLinkPage(requireContext(), ad.toLinkEntity(), "(下载游戏-求版本)", "求版本"); + }); + } } @Override @@ -107,71 +119,50 @@ public class VoteFragment extends ListFragment { + if (actionId == EditorInfo.IME_ACTION_DONE) { String nickname = mEdtInput.getText().toString().trim(); if (TextUtils.isEmpty(nickname)) { toast(R.string.vote_empty_hint); - return; + return true; } postVersionVote(nickname, true); dialog.dismiss(); + return true; } + return false; }); - dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - Util_System_Keyboard.hideSoftKeyboard(getActivity()); + // 取消按钮 + TextView cancel = view.findViewById(R.id.dialog_nickname_cancel); + cancel.setOnClickListener(v -> dialog.dismiss()); + + // 确定按钮 + TextView confirm = view.findViewById(R.id.dialog_nickname_confirm); + confirm.setOnClickListener(v -> { + String nickname = mEdtInput.getText().toString().trim(); + if (TextUtils.isEmpty(nickname)) { + toast(R.string.vote_empty_hint); + return; } + postVersionVote(nickname, true); + dialog.dismiss(); }); + dialog.setOnDismissListener(dialog1 -> Util_System_Keyboard.hideSoftKeyboard(getActivity())); + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(view); dialog.show(); - mCachedView.postDelayed(new Runnable() { - @Override - public void run() { - Util_System_Keyboard.showSoftKeyboard(getContext(), mEdtInput); - } - }, 300); + mCachedView.postDelayed(() -> Util_System_Keyboard.showSoftKeyboard(getContext(), mEdtInput), 300); } private void postVersionVote(final String name, final boolean isNewVote) { diff --git a/app/src/main/res/layout/activity_suggest.xml b/app/src/main/res/layout/activity_suggest.xml index e90d26de77..269d23eb71 100644 --- a/app/src/main/res/layout/activity_suggest.xml +++ b/app/src/main/res/layout/activity_suggest.xml @@ -1,8 +1,9 @@ + android:orientation = "vertical"> @@ -82,15 +83,35 @@ android:paddingBottom = "15dp" android:visibility = "visible" > - + + + + + + + + + android:visibility = "gone" + tools:visibility = "visible"> + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_discover.xml b/app/src/main/res/layout/fragment_discover.xml index 0a080b69c2..a63242b8f7 100644 --- a/app/src/main/res/layout/fragment_discover.xml +++ b/app/src/main/res/layout/fragment_discover.xml @@ -1,243 +1,177 @@ - + + android:layout_width="match_parent" + android:layout_height="@dimen/appbar_height" + android:background="@android:color/white" + android:gravity="center" + android:singleLine="true" + android:text="@string/discover_title" + android:textColor="@color/black" + android:textSize="15sp" + android:textStyle="bold" /> + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:id="@+id/discover_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + android:layout_width="match_parent" + android:layout_height="8dp" /> + android:id="@+id/discover_game_trends" + style="@style/discoverItem"> + android:id="@+id/discover_game_trends_icon" + style="@style/discoverIcon" + android:src="@drawable/discover_game_trends_icon" /> + style="@style/discoverTitle" + android:layout_toRightOf="@+id/discover_game_trends_icon" + android:text="@string/discover_game_trends" /> + android:id="@+id/discover_game_unread" + android:layout_width="31dp" + android:layout_height="31dp" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:visibility="gone"> + android:id="@+id/discover_game_unread_icon" + style="@style/frescoStyle" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_margin="3dp" /> + android:id="@+id/login_message_hint" + android:layout_width="7dp" + android:layout_height="7dp" + android:layout_alignParentRight="true" + android:background="@drawable/oval_message_hint_bg" + android:visibility="visible" /> - + - + + android:layout_width="match_parent" + android:layout_height="8dp" /> + android:id="@+id/discover_info" + style="@style/discoverItem"> + android:id="@+id/discover_info_icon" + style="@style/discoverIcon" + android:src="@drawable/discover_info_icon" /> + style="@style/discoverTitle" + android:layout_toRightOf="@id/discover_info_icon" + android:text="@string/discover_info_center" /> - + + android:layout_width="match_parent" + android:layout_height="1dp" /> + android:id="@+id/discover_libao" + style="@style/discoverItem"> + android:id="@+id/discover_libao_icon" + style="@style/discoverIcon" + android:src="@drawable/personal_libao_icon" /> + style="@style/discoverTitle" + android:layout_toRightOf="@+id/discover_libao_icon" + android:text="@string/personal_libao" /> - + + android:layout_width="match_parent" + android:layout_height="8dp" /> + android:id="@+id/discover_kuaichuan" + style="@style/discoverItem"> + android:id="@+id/discover_kuaichuan_icon" + style="@style/discoverIcon" + android:src="@drawable/discover_kuaichuan_icon" /> + style="@style/discoverTitle" + android:layout_toRightOf="@+id/discover_kuaichuan_icon" + android:text="@string/download_send_traffic_free" /> - + + android:layout_width="match_parent" + android:layout_height="1dp" /> + android:id="@+id/discover_apk_cleaner" + style="@style/discoverItem"> + android:id="@+id/discover_apk_cleaner_icon" + style="@style/discoverIcon" + android:src="@drawable/discover_apk_cleaner_icon" /> + style="@style/discoverTitle" + android:layout_toRightOf="@+id/discover_apk_cleaner_icon" + android:text="@string/title_clean_apk" /> - + + android:layout_width="match_parent" + android:layout_height="8dp" /> + android:id="@+id/discover_tools" + style="@style/discoverItem"> + android:id="@+id/discover_tools_icon" + style="@style/discoverIcon" + android:src="@drawable/discover_tools_icon" /> + style="@style/discoverTitle" + android:layout_toRightOf="@+id/discover_tools_icon" + android:text="@string/toolkit" /> - + + - + - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_vote.xml b/app/src/main/res/layout/fragment_vote.xml index 55717f2d4c..8bcb07f9f1 100644 --- a/app/src/main/res/layout/fragment_vote.xml +++ b/app/src/main/res/layout/fragment_vote.xml @@ -1,9 +1,26 @@ + android:layout_height = "match_parent"> + + diff --git a/app/src/main/res/layout/piece_discover_item.xml b/app/src/main/res/layout/piece_discover_item.xml new file mode 100644 index 0000000000..7c81906276 --- /dev/null +++ b/app/src/main/res/layout/piece_discover_item.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 598c5b2222..6e152df98f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -161,7 +161,7 @@ 欢迎畅所欲言,光环助手会努力变得更好 普通反馈 功能收录 - 想法还是可以有的,万一实现了呢 + 游戏加速、单机功能,统统可以有 发生闪退 出现App自动退出或重启的情况请及时反馈 游戏问题 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 9b9925add2..80407142dc 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -180,4 +180,27 @@ 36dp + + + + + + \ No newline at end of file diff --git a/libraries/LGLibrary b/libraries/LGLibrary index 7161e384dc..c3ec3bc709 160000 --- a/libraries/LGLibrary +++ b/libraries/LGLibrary @@ -1 +1 @@ -Subproject commit 7161e384dcc8cfec2dc700cba9017f687e60e3ef +Subproject commit c3ec3bc709b2ac92e3009fca562958c519f51ec3