diff --git a/app/src/main/java/com/gh/base/ToolBarActivity.java b/app/src/main/java/com/gh/base/ToolBarActivity.java index 62a57a0179..b1fc079ab4 100644 --- a/app/src/main/java/com/gh/base/ToolBarActivity.java +++ b/app/src/main/java/com/gh/base/ToolBarActivity.java @@ -5,6 +5,7 @@ import android.app.Activity; import android.content.Intent; import android.os.Build; import android.os.Bundle; +import android.text.TextUtils; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -197,6 +198,16 @@ public abstract class ToolBarActivity extends BaseActivity implements ToolbarCon if (count != null) { mDownloadCountHint.setVisibility(View.VISIBLE); mDownloadCountHint.setText(count); + + ViewGroup.LayoutParams params = mDownloadCountHint.getLayoutParams(); + if (TextUtils.isEmpty(count)) { + params.width = DisplayUtils.dip2px(6); + params.height = DisplayUtils.dip2px(6); + } else { + params.width = DisplayUtils.dip2px(12); + params.height = DisplayUtils.dip2px(12); + } + mDownloadCountHint.setLayoutParams(params); } else { mDownloadCountHint.setVisibility(View.GONE); } diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index 5540aa00c4..8c27a9edfa 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -5,8 +5,10 @@ import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.SharedPreferences; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; +import android.preference.PreferenceManager; import android.text.Html; import android.text.SpannableStringBuilder; import android.text.Spanned; @@ -32,6 +34,8 @@ import com.gh.common.view.DrawableView; import com.gh.gamecenter.AboutActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.WebActivity; +import com.halo.assistant.HaloApp; +import com.halo.assistant.fragment.SettingsFragment; import com.lightgame.utils.AppManager; import com.lightgame.utils.Utils; @@ -152,22 +156,19 @@ public class DialogUtils { } public static void checkDownload(Context context, String size, CheckDownloadCallBack callBack) { + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(HaloApp.getInstance().getApplication()); if (!NetworkUtils.isNetworkConnected(context)) { showNoConnectionDownloadDialog(context, null, () -> callBack.onResponse(true)); - } else if (NetworkUtils.isWifiConnected(context) || filter4GorSize(context, size)) { + } else if (NetworkUtils.isWifiConnected(context) + || filter4GorSize(context, size) + || !preferences.getBoolean(SettingsFragment.getTrafficDownloadHintKey(), true)) { callBack.onResponse(false); } else { MtaHelper.onEvent("移动网络下载", NetworkUtils.getMobileNetworkType(context), "出现弹窗提示"); showDownloadDialog(context, - () -> { - callBack.onResponse(false); - MtaHelper.onEvent("移动网络下载", NetworkUtils.getMobileNetworkType(context), "立即下载"); - }, - () -> { - callBack.onResponse(true); - MtaHelper.onEvent("移动网络下载", NetworkUtils.getMobileNetworkType(context), "连上WiFi后自动下载"); - }); + () -> callBack.onResponse(false), + () -> callBack.onResponse(true)); } } @@ -207,7 +208,43 @@ public class DialogUtils { } public static void showDownloadDialog(Context context, ConfirmListener listener, CancelListener cancelListener) { - showWarningDialog(context, "下载提示", "当前正在使用移动网络,立即下载会消耗手机流量", "连上WiFi后自动下载", "立即下载", listener, cancelListener); + context = checkDialogContext(context); + + final Dialog dialog = new Dialog(context, R.style.GhAlertDialog); + + View contentView = LayoutInflater.from(context).inflate(R.layout.dialog_download_traffic, null); + View allowOnce = contentView.findViewById(R.id.allow_once); + View allowAlways = contentView.findViewById(R.id.allow_always); + View wifiAuto = contentView.findViewById(R.id.wifi_auto); + + Context finalContext = context; + allowOnce.setOnClickListener(v -> { + Utils.toast(finalContext, "已使用移动网络下载,请注意流量消耗!"); + listener.onConfirm(); + dialog.dismiss(); + MtaHelper.onEvent("移动网络下载", NetworkUtils.getMobileNetworkType(finalContext), "本次允许"); + }); + wifiAuto.setOnClickListener(v -> { + cancelListener.onCancel(); + dialog.dismiss(); + MtaHelper.onEvent("移动网络下载", NetworkUtils.getMobileNetworkType(finalContext), "连上WiFi后自动下载"); + }); + allowAlways.setOnClickListener(v -> { + Utils.toast(finalContext, "已使用移动网络下载,请注意流量消耗!"); + PreferenceManager + .getDefaultSharedPreferences(finalContext) + .edit() + .putBoolean(SettingsFragment.getTrafficDownloadHintKey(), false) + .apply(); + listener.onConfirm(); + dialog.dismiss(); + MtaHelper.onEvent("移动网络下载", NetworkUtils.getMobileNetworkType(finalContext), "总是允许"); + }); + + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + dialog.setContentView(contentView); + dialog.show(); + } public static void showResumeDownloadDialog(Context context, ConfirmListener listener, CancelListener cancelListener) { @@ -225,10 +262,30 @@ public class DialogUtils { } public static void showPluginDialog(Context context, final ConfirmListener listener) { - Spanned spanned = Html.fromHtml("您将进行插件化安装以实现插件功能,此过程将" - + "卸载" + "当前使用的版本并" - + "安装插件版本"); - showWarningDialog(context, "插件化安装", spanned, listener); + context = checkDialogContext(context); + + MtaHelper.onEvent("插件化", "插件化安装弹窗", "出现弹窗提示"); + + final Dialog dialog = new Dialog(context, R.style.GhAlertDialog); + + View contentView = LayoutInflater.from(context).inflate(R.layout.dialog_plugin, null); + TextView negativeTv = contentView.findViewById(R.id.dialog_negative); + TextView positiveTv = contentView.findViewById(R.id.dialog_positive); + negativeTv.setOnClickListener(v -> { + dialog.dismiss(); + MtaHelper.onEvent("插件化", "插件化安装弹窗", "取消"); + }); + positiveTv.setOnClickListener(view -> { + if (listener != null) { + listener.onConfirm(); + } + dialog.dismiss(); + MtaHelper.onEvent("插件化", "插件化安装弹窗", "确认并开始"); + }); + + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + dialog.setContentView(contentView); + dialog.show(); } /** diff --git a/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt b/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt index c244f38722..967034839f 100644 --- a/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt @@ -1,12 +1,16 @@ package com.gh.gamecenter.download +import android.graphics.Color import android.os.Bundle import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout import android.widget.TextView import androidx.fragment.app.Fragment import com.gh.base.fragment.BaseFragment_TabLayout import com.gh.common.util.MtaHelper +import com.gh.common.util.dip2px import com.gh.download.DownloadManager import com.gh.gamecenter.DownloadManagerActivity import com.gh.gamecenter.R @@ -122,9 +126,21 @@ class DownloadFragment : BaseFragment_TabLayout() { } } - mDownloadNumber.text = if (downloadingCount > 0) { - downloadingCount.toString() - } else "" + val layoutParams = mDownloadNumber.layoutParams as LinearLayout.LayoutParams + if (downloadingCount > 0) { + layoutParams.width = ViewGroup.LayoutParams.WRAP_CONTENT + layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT + layoutParams.setMargins(4F.dip2px(), 0, 0, 0F.dip2px()) + mDownloadNumber.setBackgroundColor(Color.TRANSPARENT) + mDownloadNumber.text = downloadingCount.toString() + } else { + layoutParams.width = 6F.dip2px() + layoutParams.height = 6F.dip2px() + layoutParams.setMargins(2F.dip2px(), 0, 0, 3F.dip2px()) + mDownloadNumber.setBackgroundResource(R.drawable.oval_hint_red_bg) + mDownloadNumber.text = "" + } + mDownloadNumber.layoutParams = layoutParams } private fun setUpdateHint() { diff --git a/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java index 03daba87fb..12a235d352 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java @@ -2,10 +2,12 @@ package com.gh.gamecenter.fragment; import android.content.Intent; import android.os.Bundle; +import android.text.TextUtils; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.ScaleAnimation; @@ -21,6 +23,7 @@ import com.gh.common.databind.BindingAdapters; import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.DataUtils; +import com.gh.common.util.DisplayUtils; import com.gh.common.util.EntranceUtils; import com.gh.common.util.MtaHelper; import com.gh.download.DownloadManager; @@ -281,6 +284,16 @@ public class SearchToolbarFragment extends BaseFragment implements View.OnClickL if (count != null) { mDownloadHintTv.setVisibility(View.VISIBLE); mDownloadHintTv.setText(count); + + ViewGroup.LayoutParams params = mDownloadHintTv.getLayoutParams(); + if (TextUtils.isEmpty(count)) { + params.width = DisplayUtils.dip2px(6); + params.height = DisplayUtils.dip2px(6); + } else { + params.width = DisplayUtils.dip2px(12); + params.height = DisplayUtils.dip2px(12); + } + mDownloadHintTv.setLayoutParams(params); } else { mDownloadHintTv.setVisibility(View.GONE); } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt index 3b7a3b06e1..d065becea2 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt @@ -860,6 +860,15 @@ class GameDetailFragment : NormalFragment() { private fun updateDownloadCountHint(updateList: List?) { val count = DownloadManager.getInstance(requireContext()).getDownloadOrUpdateCount(updateList) + val params = mDownloadCountHint?.layoutParams + if (TextUtils.isEmpty(count)) { + params?.width = DisplayUtils.dip2px(6f) + params?.height = DisplayUtils.dip2px(6f) + } else { + params?.width = DisplayUtils.dip2px(12f) + params?.height = DisplayUtils.dip2px(12f) + } + mDownloadCountHint?.layoutParams = params mDownloadCountHint?.goneIf(count == null) mDownloadCountHint?.text = count.toString() diff --git a/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.java b/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.java index b727fa3695..b19c39cb48 100644 --- a/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.java @@ -96,7 +96,6 @@ public class SettingsFragment extends NormalFragment { public static final String AUTO_INSTALL_SP_KEY = "autoinstall"; public static final String CONCERN_GAME_SP_KEY = "concerngame"; public static final String FONT_SIZE_SP_KEY = "fontsize"; - public static final String TRAFFIC_DOWNLOAD_SP_KEY = "traffic_download"; private SharedPreferences sp; @@ -106,6 +105,10 @@ public class SettingsFragment extends NormalFragment { private boolean mIsUpdate; + public static String getTrafficDownloadHintKey() { + return PackageUtils.getVersionName() + "traffic_download_hint"; + } + @Override public void onStop() { saveCurrentSetting(); @@ -157,7 +160,9 @@ public class SettingsFragment extends NormalFragment { mSettingCacheTv.setText(getCacheSize()); mSettingAutoinstallSb.setChecked(sp.getBoolean(AUTO_INSTALL_SP_KEY, true)); mSettingConcerngameSb.setChecked(sp.getBoolean(CONCERN_GAME_SP_KEY, true)); - mSettingTrafficSb.setChecked(sp.getBoolean(TRAFFIC_DOWNLOAD_SP_KEY, true)); + mSettingTrafficSb.setChecked(sp.getBoolean(getTrafficDownloadHintKey(), true)); + mSettingTrafficSb.setOnCheckedChangeListener((buttonView, isChecked) -> + MtaHelper.onEvent("我的光环_设置", "流量下载提醒", isChecked ? "打开" : "关闭")); checkSizeIndex = sp.getInt(FONT_SIZE_SP_KEY, 1); if (checkSizeIndex == 0) { @@ -239,7 +244,7 @@ public class SettingsFragment extends NormalFragment { mEditor.putBoolean(AUTO_INSTALL_SP_KEY, mSettingAutoinstallSb.isChecked()); // mEditor.putBoolean("autodelete", mSettingAutodeleteSb.isChecked()); mEditor.putBoolean(CONCERN_GAME_SP_KEY, mSettingConcerngameSb.isChecked()); - mEditor.putBoolean(TRAFFIC_DOWNLOAD_SP_KEY, mSettingTrafficSb.isChecked()); + mEditor.putBoolean(getTrafficDownloadHintKey(), mSettingTrafficSb.isChecked()); mEditor.putInt(FONT_SIZE_SP_KEY, checkSizeIndex); mEditor.apply(); } diff --git a/app/src/main/res/layout/dialog_download_traffic.xml b/app/src/main/res/layout/dialog_download_traffic.xml new file mode 100644 index 0000000000..1239efb947 --- /dev/null +++ b/app/src/main/res/layout/dialog_download_traffic.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_plugin.xml b/app/src/main/res/layout/dialog_plugin.xml new file mode 100644 index 0000000000..0b226ac23e --- /dev/null +++ b/app/src/main/res/layout/dialog_plugin.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_toolbar.xml b/app/src/main/res/layout/fragment_toolbar.xml index 7474af3887..bda44bd442 100644 --- a/app/src/main/res/layout/fragment_toolbar.xml +++ b/app/src/main/res/layout/fragment_toolbar.xml @@ -58,13 +58,14 @@ android:id="@+id/action_tip" android:layout_width="12dp" android:layout_height="12dp" - android:layout_alignParentRight="true" - android:layout_marginTop="8dp" + android:layout_alignParentBottom="true" + android:layout_marginLeft="24dp" + android:layout_marginBottom="30dp" android:background="@drawable/oval_hint_red_bg" android:gravity="center" android:textColor="@android:color/white" android:textSize="8sp" - android:visibility="gone" /> + android:visibility="visible" /> diff --git a/app/src/main/res/layout/menu_action_download.xml b/app/src/main/res/layout/menu_action_download.xml index 09aed85571..dea62f3255 100644 --- a/app/src/main/res/layout/menu_action_download.xml +++ b/app/src/main/res/layout/menu_action_download.xml @@ -14,12 +14,12 @@ android:id="@+id/menu_download_count_hint" android:layout_width="12dp" android:layout_height="12dp" - android:layout_alignParentRight="true" - android:layout_marginTop="8dp" - android:layout_marginRight="8dp" - android:visibility="gone" + android:layout_alignParentBottom="true" + android:layout_marginLeft="32dp" + android:layout_marginBottom="30dp" android:background="@drawable/oval_hint_red_bg" android:gravity="center" android:textColor="@android:color/white" - android:textSize="8sp" /> + android:textSize="8sp" + android:visibility="visible" /> \ No newline at end of file diff --git a/app/src/main/res/layout/tab_item_download_number.xml b/app/src/main/res/layout/tab_item_download_number.xml index 3954ec82bf..07d38bc6f1 100644 --- a/app/src/main/res/layout/tab_item_download_number.xml +++ b/app/src/main/res/layout/tab_item_download_number.xml @@ -1,25 +1,27 @@ - + + android:id="@+id/tab_download_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="19dp" + android:text="@string/download_game" + android:textColor="@color/text_tabbar_style" + android:textSize="14sp" /> - \ No newline at end of file + android:id="@+id/tab_download_number" + android:layout_width="6dp" + android:layout_height="6dp" + android:layout_marginLeft="2dp" + android:layout_marginBottom="3dp" + android:background="@drawable/oval_hint_red_bg" + android:gravity="center" + android:textColor="@color/text_tabbar_style" + android:textSize="10sp" /> + + \ 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 397edd608b..799800910e 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -142,5 +142,5 @@ #FAFAFA #3BABFF #2461FF - + #FF0000 \ No newline at end of file