diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0744905b68..f92240befc 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -609,7 +609,8 @@
+ android:screenOrientation="portrait"
+ android:launchMode="singleTask" />
{
+ startActivity(EnergyCenterActivity.Companion.getIntent(this));
+ SPUtils.setBoolean(Constants.SP_SHOW_TASK_FLOAT, false);
+ mWM.removeView(mTaskBackView);
+ mHasAddTaskFloat = false;
+ });
+ mWM.addView(mTaskBackView, wmParams);
+ }
+
+
/**
* 此回调可用于确认当前 activity 已经执行了 finish() 方法并处于 isFinishing 状态
*/
diff --git a/app/src/main/java/com/gh/common/DefaultJsApi.kt b/app/src/main/java/com/gh/common/DefaultJsApi.kt
index c2726fa00e..41cae2f25f 100644
--- a/app/src/main/java/com/gh/common/DefaultJsApi.kt
+++ b/app/src/main/java/com/gh/common/DefaultJsApi.kt
@@ -8,6 +8,8 @@ import androidx.annotation.Keep
import androidx.appcompat.app.AppCompatActivity
import com.gh.base.CurrentActivityHolder
import com.gh.common.constant.Constants
+import com.gh.common.loghub.LoghubUtils
+import com.gh.common.tracker.Tracker
import com.gh.common.util.*
import com.gh.common.view.dsbridge.CompletionHandler
import com.gh.gamecenter.BuildConfig
@@ -21,6 +23,7 @@ import com.gh.gamecenter.energy.EnergyCenterActivity
import com.gh.gamecenter.energy.EnergyHouseActivity
import com.gh.gamecenter.help.QaFeedbackDialogFragment
import com.gh.gamecenter.manager.UserManager
+import com.gh.gamecenter.personalhome.border.AvatarBorderActivity
import com.gh.gamecenter.retrofit.BiResponse
import com.gh.gamecenter.retrofit.RetrofitManager
import com.gh.gamecenter.security.BindPhoneActivity
@@ -296,6 +299,35 @@ class DefaultJsApi(var context: Context) {
QaFeedbackDialogFragment.show(context as AppCompatActivity, msg.toString())
}
+ @JavascriptInterface
+ fun getMetaObject(msg: Any): String {
+ return LogUtils.getMetaObject().toString()
+ }
+
+ @JavascriptInterface
+ fun getLaunchId(msg: Any): String {
+ return Tracker.launchId
+ }
+
+ @JavascriptInterface
+ fun getSessionId(msg: Any): String {
+ return Tracker.sessionId
+ }
+
+ @JavascriptInterface
+ fun postLogEvent(event: Any) {
+ val logEvent = event.toString().toObject() ?: LogEvent()
+ debugOnly {
+ Utils.log("LogUtils->${logEvent.jsonString}")
+ }
+ LoghubUtils.log(logEvent.jsonString, logEvent.logStore, false)
+ }
+
+ @JavascriptInterface
+ fun startAvatarBorderPage(msg: Any) {
+ context.startActivity(AvatarBorderActivity.getIntent(context, msg.toString()))
+ }
+
@Keep
internal data class ImageEvent(var imageList: ArrayList = arrayListOf(), var position: Int = 0)
@@ -308,4 +340,6 @@ class DefaultJsApi(var context: Context) {
var url: String = "",
var poster: String = "")
+ @Keep
+ internal data class LogEvent(var jsonString: String = "", var logStore: String = "")
}
diff --git a/app/src/main/java/com/gh/common/constant/Constants.java b/app/src/main/java/com/gh/common/constant/Constants.java
index a4d2b7bb78..f23900ba5d 100644
--- a/app/src/main/java/com/gh/common/constant/Constants.java
+++ b/app/src/main/java/com/gh/common/constant/Constants.java
@@ -180,6 +180,9 @@ public class Constants {
// 头像挂件ID
public static final String SP_CHOOSE_AVATAR_ID = "choose_avatar_id";
+ //是否显示返回任务悬浮图标
+ public static final String SP_SHOW_TASK_FLOAT = "show_task_float";
+
//手机号码匹配规则
public static final String REGEX_MOBILE = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";
public static final String REGEX_ACCOUNT = "^[a-zA-Z_]\\w{5,17}$";
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 c6f9bc6454..d0c177d4ed 100644
--- a/app/src/main/java/com/gh/common/util/DialogUtils.java
+++ b/app/src/main/java/com/gh/common/util/DialogUtils.java
@@ -2161,6 +2161,19 @@ public class DialogUtils {
dialog.show();
}
+ public static void showSignRemindSuccessDialog(Context context) {
+ context = checkDialogContext(context);
+
+ final Dialog dialog = new Dialog(context, R.style.DialogWindowTransparent);
+
+ View contentView = LayoutInflater.from(context).inflate(R.layout.dialog_sign_remind_success, null);
+ contentView.findViewById(R.id.closeIv).setOnClickListener(v -> dialog.dismiss());
+
+ dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ dialog.setContentView(contentView);
+ dialog.show();
+ }
+
/**
* @param context may be is application context
* @return activity context
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 ddb91f7280..2b6027337d 100644
--- a/app/src/main/java/com/gh/common/util/DirectUtils.kt
+++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt
@@ -438,6 +438,7 @@ object DirectUtils {
*/
@JvmStatic
fun directToHomeActivity(context: Context, userId: String?, position: Int, entrance: String? = null, path: String? = null) {
+ IntegralLogHelper.log("view_homepage", "个人主页")
val bundle = Bundle()
bundle.putString(KEY_USER_ID, userId)
bundle.putString(KEY_TO, UserHomeActivity::class.java.name)
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 3c6736752e..bf37005a50 100644
--- a/app/src/main/java/com/gh/common/util/EntranceUtils.java
+++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java
@@ -150,7 +150,9 @@ public class EntranceUtils {
public static final String KEY_CHECK_QUESTION_CONCERN = "check_question_concern";
public static final String KEY_DRAFT_ID = "draft_id";
public static final String KEY_KAIFU_LIST = "kaifuList";
+ public static final String KEY_CATEGORY = "category";
public static final String KEY_CATEGORY_ID = "category_id";
+ public static final String KEY_CATEGORY_NAME = "category_name";
public static final String KEY_CATEGORY_TITLE = "category_title";
public static final String KEY_CATEGORY_INIT_TITLE = "category_init_title";
public static final String KEY_BLOCK_DATA = "blockData";
diff --git a/app/src/main/java/com/gh/common/util/IntegralLogHelper.kt b/app/src/main/java/com/gh/common/util/IntegralLogHelper.kt
new file mode 100644
index 0000000000..2d7ddf75d2
--- /dev/null
+++ b/app/src/main/java/com/gh/common/util/IntegralLogHelper.kt
@@ -0,0 +1,137 @@
+package com.gh.common.util
+
+import com.gh.common.loghub.LoghubUtils.log
+import com.gh.common.tracker.Tracker.launchId
+import com.gh.common.tracker.Tracker.sessionId
+import com.lightgame.utils.Utils
+import org.json.JSONObject
+
+object IntegralLogHelper {
+
+ fun log(event: String, location: String) = log(event, location, null)
+
+ fun log(event: String, location: String, entrance: String? = null) {
+ val json = JSONObject().apply {
+ tryWithDefaultCatch {
+ put("meta", LogUtils.getMetaObject())
+ put("event", event)
+ put("location", location)
+ put("timestamp", System.currentTimeMillis() / 1000)
+ put("launch_id", launchId)
+ put("session_id", sessionId)
+ entrance?.let {
+ put("entrance", it)
+ }
+ }
+ }
+
+ debugOnly {
+ Utils.log("LogUtils->$json")
+ }
+ log(json, "score", false)
+ }
+
+ fun logTask(event: String, location: String, jobId: String, jobName: String, jobType: String) {
+ val json = JSONObject().apply {
+ tryWithDefaultCatch {
+ put("meta", LogUtils.getMetaObject())
+ put("event", event)
+ put("location", location)
+ put("timestamp", System.currentTimeMillis() / 1000)
+ put("launch_id", launchId)
+ put("session_id", sessionId)
+ put("job_id", jobId)
+ put("job_name", jobName)
+ put("job_type", jobType)
+ }
+ }
+
+ debugOnly {
+ Utils.log("LogUtils->$json")
+ }
+ log(json, "score", false)
+ }
+
+ fun logCommodityCategory(event: String, location: String, entrance: String, categoryId: String, categoryName: String) {
+ val json = JSONObject().apply {
+ tryWithDefaultCatch {
+ put("meta", LogUtils.getMetaObject())
+ put("event", event)
+ put("location", location)
+ put("timestamp", System.currentTimeMillis() / 1000)
+ put("launch_id", launchId)
+ put("session_id", sessionId)
+ put("entrance", entrance)
+ put("goods_species_id", categoryId)
+ put("goods_species_name", categoryName)
+ }
+ }
+
+ debugOnly {
+ Utils.log("LogUtils->$json")
+ }
+ log(json, "score", false)
+ }
+
+ fun logCommodity(event: String, location: String, commodityId: String, categoryId: String, categoryName: String) {
+ val json = JSONObject().apply {
+ tryWithDefaultCatch {
+ put("meta", LogUtils.getMetaObject())
+ put("event", event)
+ put("location", location)
+ put("timestamp", System.currentTimeMillis() / 1000)
+ put("launch_id", launchId)
+ put("session_id", sessionId)
+ put("goods_id", commodityId)
+ put("goods_species_id", categoryId)
+ put("goods_species_name", categoryName)
+ }
+ }
+
+ debugOnly {
+ Utils.log("LogUtils->$json")
+ }
+ log(json, "score", false)
+ }
+
+ fun logEnergyRange(event: String, location: String, range: String) {
+ val json = JSONObject().apply {
+ tryWithDefaultCatch {
+ put("meta", LogUtils.getMetaObject())
+ put("event", event)
+ put("location", location)
+ put("timestamp", System.currentTimeMillis() / 1000)
+ put("launch_id", launchId)
+ put("session_id", sessionId)
+ put("energy_range", range)
+ }
+ }
+
+ debugOnly {
+ Utils.log("LogUtils->$json")
+ }
+ log(json, "score", false)
+ }
+
+ fun logPendent(event: String, location: String, pendentId: String, pendentType: String? = null) {
+ val json = JSONObject().apply {
+ tryWithDefaultCatch {
+ put("meta", LogUtils.getMetaObject())
+ put("event", event)
+ put("location", location)
+ put("timestamp", System.currentTimeMillis() / 1000)
+ put("launch_id", launchId)
+ put("session_id", sessionId)
+ put("pendant_id", pendentId)
+ pendentType?.run {
+ put("pendant_type", this)
+ }
+ }
+ }
+
+ debugOnly {
+ Utils.log("LogUtils->$json")
+ }
+ log(json, "score", false)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/common/util/LogUtils.java b/app/src/main/java/com/gh/common/util/LogUtils.java
index 48c44b6971..2b4b10e979 100644
--- a/app/src/main/java/com/gh/common/util/LogUtils.java
+++ b/app/src/main/java/com/gh/common/util/LogUtils.java
@@ -852,5 +852,4 @@ public class LogUtils {
}
LoghubUtils.log(object, "event", false);
}
-
}
diff --git a/app/src/main/java/com/gh/common/util/TimestampUtils.java b/app/src/main/java/com/gh/common/util/TimestampUtils.java
index fdd30823f2..73cd4ddbb0 100644
--- a/app/src/main/java/com/gh/common/util/TimestampUtils.java
+++ b/app/src/main/java/com/gh/common/util/TimestampUtils.java
@@ -51,6 +51,7 @@ public class TimestampUtils {
whiteList.add(".*tasks:check.*");
whiteList.add(".*novice_tasks.*");
whiteList.add(".*daily_tasks.*");
+ whiteList.add(".*fixed_tasks.*");
whiteList.add(".*energies.*");
}
diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java
index 1cc9dd5329..2bc5b08511 100644
--- a/app/src/main/java/com/gh/gamecenter/MainActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java
@@ -97,7 +97,6 @@ import com.lightgame.utils.Utils;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
-import org.jetbrains.annotations.NotNull;
import org.json.JSONObject;
import java.io.BufferedReader;
@@ -106,7 +105,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Field;
-import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
@@ -299,6 +297,9 @@ public class MainActivity extends BaseActivity {
//重置首页视频播放进度
SPUtils.setString(Constants.SP_HOME_VIDEO_PLAY_RECORD, "");
+ // 重新打开APP重置"显示返回任务悬浮图标"标志位
+ SPUtils.setBoolean(Constants.SP_SHOW_TASK_FLOAT, false);
+
postAttentionVideoRecord();
}
diff --git a/app/src/main/java/com/gh/gamecenter/energy/CategoryAdapter.kt b/app/src/main/java/com/gh/gamecenter/energy/CategoryAdapter.kt
index f96e4efb0c..4ad6cbd519 100644
--- a/app/src/main/java/com/gh/gamecenter/energy/CategoryAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/energy/CategoryAdapter.kt
@@ -42,6 +42,13 @@ class CategoryAdapter(context: Context,
root.setOnClickListener {
if (position != mCurrentIndex) {
+ IntegralLogHelper.logCommodityCategory(
+ "click_tab_goods_catalog",
+ "光能中心",
+ "光能中心-商品分类",
+ entity.id,
+ entity.name
+ )
mFragment.updateCategory(entity.id)
mCurrentIndex = position
notifyDataSetChanged()
diff --git a/app/src/main/java/com/gh/gamecenter/energy/CommodityAdapter.kt b/app/src/main/java/com/gh/gamecenter/energy/CommodityAdapter.kt
index 0521748440..f8b715f6d8 100644
--- a/app/src/main/java/com/gh/gamecenter/energy/CommodityAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/energy/CommodityAdapter.kt
@@ -15,10 +15,13 @@ import com.gh.gamecenter.R
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder
import com.gh.gamecenter.baselist.ListAdapter
import com.gh.gamecenter.databinding.CommodityItemBinding
+import com.gh.gamecenter.entity.CommodityCategoryEntity
import com.gh.gamecenter.entity.CommodityEntity
import io.reactivex.disposables.Disposable
-class CommodityAdapter(context: Context, val entrance: String): ListAdapter(context) {
+class CommodityAdapter(context: Context,
+ val entrance: String,
+ val category: CommodityCategoryEntity): ListAdapter(context) {
private val mTimers = ArrayList()
@@ -76,7 +79,21 @@ class CommodityAdapter(context: Context, val entrance: String): ListAdapter() {
private var mAdapter: CommodityAdapter? = null
private lateinit var mBinding: FragmentCommodityListBinding
private var mCategoryList: ArrayList? = null
+ private var mCategory: CommodityCategoryEntity? = null
private var mLastPositions: IntArray? = null
private var mLastVisibleItemPosition = 0
private var mHaveLoad = false
@@ -30,13 +31,17 @@ class CommodityFragment : ListFragment() {
override fun provideListViewModel(): CommodityViewModel {
mEntrance = requireArguments().getString(EntranceUtils.KEY_ENTRANCE) ?: ""
- val categoryId = requireArguments().getString(EntranceUtils.KEY_CATEGORY_ID) ?: ""
- val factory = CommodityViewModel.Factory(categoryId, mEntrance)
+ mCategory = requireArguments().getParcelable(EntranceUtils.KEY_CATEGORY)
+ val factory = CommodityViewModel.Factory(mCategory?.id ?: "", mEntrance)
return viewModelProvider(factory)
}
override fun provideListAdapter() = mAdapter
- ?: CommodityAdapter(requireContext(), mEntrance).apply { mAdapter = this }
+ ?: CommodityAdapter(
+ requireContext(),
+ mEntrance,
+ mCategory ?: CommodityCategoryEntity()
+ ).apply { mAdapter = this }
override fun getItemDecoration() = null
@@ -54,13 +59,29 @@ class CommodityFragment : ListFragment() {
header.visibility = View.VISIBLE
categoryContainer.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
categoryContainer.adapter = CategoryAdapter(requireContext(), this@CommodityFragment, mCategoryList!!)
- more.setOnClickListener { requireContext().startActivity(EnergyHouseActivity.getIntent(requireContext())) }
+ more.setOnClickListener {
+ IntegralLogHelper.run {
+ log("click_energy_store", "光能中心", "光能中心-商品更多")
+ log("click_more", "光能中心", "光能中心-右上角更多")
+ log("view_energy_store", "光能屋")
+ }
+
+ requireContext().startActivity(EnergyHouseActivity.getIntent(requireContext()))
+ }
}
}
mBinding.bottom.run {
if (mEntrance == "光能中心") {
- setOnClickListener { requireContext().startActivity(EnergyHouseActivity.getIntent(requireContext())) }
+ setOnClickListener {
+ IntegralLogHelper.run {
+ log("click_energy_store", "光能中心", "光能中心-底部更多")
+ log("click_more", "光能中心", "光能中心-底部更多")
+ log("view_energy_store", "光能屋")
+ }
+
+ requireContext().startActivity(EnergyHouseActivity.getIntent(requireContext()))
+ }
} else {
visibility = View.GONE
}
diff --git a/app/src/main/java/com/gh/gamecenter/energy/EnergyCenterFragment.kt b/app/src/main/java/com/gh/gamecenter/energy/EnergyCenterFragment.kt
index 8b4cb03368..22fd7faf4a 100644
--- a/app/src/main/java/com/gh/gamecenter/energy/EnergyCenterFragment.kt
+++ b/app/src/main/java/com/gh/gamecenter/energy/EnergyCenterFragment.kt
@@ -5,10 +5,7 @@ import android.os.Bundle
import android.util.DisplayMetrics
import android.view.LayoutInflater
import android.view.View
-import android.widget.CheckedTextView
-import android.widget.ImageView
-import android.widget.LinearLayout
-import android.widget.RelativeLayout
+import android.widget.*
import androidx.fragment.app.Fragment
import butterknife.OnClick
import com.gh.base.adapter.FragmentAdapter
@@ -121,7 +118,7 @@ class EnergyCenterFragment : BaseLazyFragment() {
mUserHomeViewModel?.signStatus?.observeNonNull(this) {
mSignStatus = it
initSignView(it)
- // 未登录且需要自动登录才调用登录接口
+ // 今天未签到且需要自动签到才调用签到接口
if (!it.todaySignIn && mAutoSign) {
mUserHomeViewModel?.signIn()
}
@@ -233,7 +230,7 @@ class EnergyCenterFragment : BaseLazyFragment() {
val bundle = Bundle()
bundle.putString(EntranceUtils.KEY_ENTRANCE, "光能中心")
if (mCategoryList.isNotEmpty()) {
- bundle.putString(EntranceUtils.KEY_CATEGORY_ID, mCategoryList[0].id)
+ bundle.putParcelable(EntranceUtils.KEY_CATEGORY, mCategoryList[0])
bundle.putParcelableArrayList(EntranceUtils.KEY_CATEGORY_LIST, mCategoryList)
}
arguments = bundle
@@ -269,6 +266,11 @@ class EnergyCenterFragment : BaseLazyFragment() {
// 处理BottomSheetBehavior的ViewPager嵌套RecyclerView滑动冲突问题
viewpager.addOnPageChangeListener {
+ if (it == 0) {
+ IntegralLogHelper.log("click_tab_energy_mission", LOCATION)
+ } else {
+ IntegralLogHelper.log("click_tab_exchange", LOCATION)
+ }
(mFragmentsList[0] as TaskFragment).setNestedScrollingEnabled(it == 0)
(mFragmentsList[1] as CommodityFragment).setNestedScrollingEnabled(it == 1)
bottomSheet.requestLayout()
@@ -293,37 +295,41 @@ class EnergyCenterFragment : BaseLazyFragment() {
}
}
- @OnClick(R.id.backIv, R.id.energyRecord, R.id.lotteryCenter, R.id.inviteFriends, R.id.signSwitch, R.id.signToday, R.id.signRule,
+ @OnClick(R.id.backIv, R.id.userEnergyContainer, R.id.energyRuleTv, R.id.inviteFriends, R.id.signSwitch, R.id.signToday, R.id.signRule,
R.id.oneDay, R.id.twoDay, R.id.threeDay, R.id.fourDay, R.id.fiveDay, R.id.sixDay, R.id.sevenDay)
fun onViewClicked(v: View) {
when (v.id) {
R.id.backIv -> requireActivity().finish()
- R.id.userEnergy -> {
- mUserInfo?.run {
- DialogUtils.showEnergyDialog(requireContext(), name, mEnergy)
+ R.id.userEnergyContainer -> {
+ IntegralLogHelper.run {
+ log("click_energy_record", LOCATION, "光能中心-光能值")
+ log("view_energy_record", "光能明细")
}
- }
-
- R.id.energyRecord -> {
- ifLogin("光能中心-光能记录") {
+ ifLogin("光能中心-光能值") {
DirectUtils.directToEnergyRecord(requireContext())
}
}
- R.id.lotteryCenter -> {
- ifLogin("光能中心-抽奖中心") {
- // 抽奖中心
+ R.id.energyRuleTv -> {
+ IntegralLogHelper.run {
+ log("click_energy_rule", LOCATION)
+ log("view_energy_rule", "光能规则")
}
}
R.id.inviteFriends -> {
+ IntegralLogHelper.run {
+ log("click_invite_friend", LOCATION)
+ log("view_invite_friend", "邀请好友页")
+ }
ifLogin("光能中心-邀请好友") {
DirectUtils.directToInviteFriends(requireContext())
}
}
R.id.signSwitch -> {
+ IntegralLogHelper.log("click_sign_remind", LOCATION)
ifLogin("光能中心-签到提醒") {
if (!ClickUtils.isFastDoubleClick()) {
dealSignRemind()
@@ -332,12 +338,13 @@ class EnergyCenterFragment : BaseLazyFragment() {
}
R.id.signRule -> {
+ IntegralLogHelper.log("click_sign_rule", LOCATION)
DialogUtils.showSignRuleDialog(requireContext())
}
R.id.signToday -> {
ifLogin("光能中心-签到气泡") {
- mUserHomeViewModel?.signIn()
+ dealSignIn()
}
}
@@ -345,7 +352,7 @@ class EnergyCenterFragment : BaseLazyFragment() {
ifLogin("光能中心-1天") {
mSignStatus?.run {
if (!todaySignIn && sevenDaySerialSign == 0) {
- mUserHomeViewModel?.signIn()
+ dealSignIn()
}
}
}
@@ -355,7 +362,7 @@ class EnergyCenterFragment : BaseLazyFragment() {
ifLogin("光能中心-2天") {
mSignStatus?.run {
if (!todaySignIn && sevenDaySerialSign == 1) {
- mUserHomeViewModel?.signIn()
+ dealSignIn()
}
}
}
@@ -365,7 +372,7 @@ class EnergyCenterFragment : BaseLazyFragment() {
ifLogin("光能中心-3天") {
mSignStatus?.run {
if (!todaySignIn && sevenDaySerialSign == 2) {
- mUserHomeViewModel?.signIn()
+ dealSignIn()
}
}
}
@@ -375,7 +382,7 @@ class EnergyCenterFragment : BaseLazyFragment() {
ifLogin("光能中心-4天") {
mSignStatus?.run {
if (!todaySignIn && sevenDaySerialSign == 3) {
- mUserHomeViewModel?.signIn()
+ dealSignIn()
}
}
}
@@ -385,7 +392,7 @@ class EnergyCenterFragment : BaseLazyFragment() {
ifLogin("光能中心-5天") {
mSignStatus?.run {
if (!todaySignIn && sevenDaySerialSign == 4) {
- mUserHomeViewModel?.signIn()
+ dealSignIn()
}
}
}
@@ -395,7 +402,7 @@ class EnergyCenterFragment : BaseLazyFragment() {
ifLogin("光能中心-6天") {
mSignStatus?.run {
if (!todaySignIn && sevenDaySerialSign == 5) {
- mUserHomeViewModel?.signIn()
+ dealSignIn()
}
}
}
@@ -405,7 +412,7 @@ class EnergyCenterFragment : BaseLazyFragment() {
ifLogin("光能中心-7天") {
mSignStatus?.run {
if (!todaySignIn && sevenDaySerialSign == 6) {
- mUserHomeViewModel?.signIn()
+ dealSignIn()
}
}
}
@@ -413,6 +420,11 @@ class EnergyCenterFragment : BaseLazyFragment() {
}
}
+ private fun dealSignIn() {
+ IntegralLogHelper.log("click_sign", LOCATION)
+ mUserHomeViewModel?.signIn()
+ }
+
private fun dealSignRemind() {
checkCalendarPermissionBeforeAction {
if (SPUtils.getBoolean(Constants.SP_SIGN_REMIND)) {
@@ -431,6 +443,7 @@ class EnergyCenterFragment : BaseLazyFragment() {
"FREQ=DAILY")
if (isSuccess) {
SPUtils.setBoolean(Constants.SP_SIGN_REMIND, true)
+ DialogUtils.showSignRemindSuccessDialog(requireContext())
mBinding?.signSwitch?.setImageResource(R.drawable.ic_energy_center_switch_on)
} else {
ToastUtils.showToast("添加签到提醒失败")
@@ -438,4 +451,8 @@ class EnergyCenterFragment : BaseLazyFragment() {
}
}
}
+
+ companion object {
+ const val LOCATION = "光能中心"
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/gamecenter/energy/EnergyHouseFragment.kt b/app/src/main/java/com/gh/gamecenter/energy/EnergyHouseFragment.kt
index 3774bbef7d..72bf6737e8 100644
--- a/app/src/main/java/com/gh/gamecenter/energy/EnergyHouseFragment.kt
+++ b/app/src/main/java/com/gh/gamecenter/energy/EnergyHouseFragment.kt
@@ -135,7 +135,7 @@ class EnergyHouseFragment: BaseLazyFragment() {
toolbar.setBackgroundColor(R.color.white.toColor())
backIv.setImageResource(R.drawable.ic_back_gamedetail)
title.setTextColor(R.color.text_333333.toColor())
- EnergyRuleTv.setTextColor(R.color.text_333333.toColor())
+ exchangeRuleTv.setTextColor(R.color.text_333333.toColor())
EnergyRuleIv.setImageResource(R.drawable.icon_doubt_black)
tabLayout.setBackgroundColor(R.color.white.toColor())
sizeContainer.setBackgroundColor(R.color.white.toColor())
@@ -144,7 +144,7 @@ class EnergyHouseFragment: BaseLazyFragment() {
toolbar.setBackgroundColor(R.color.transparent.toColor())
backIv.setImageResource(R.drawable.ic_toolbar_back_white)
title.setTextColor(R.color.white.toColor())
- EnergyRuleTv.setTextColor(R.color.white.toColor())
+ exchangeRuleTv.setTextColor(R.color.white.toColor())
EnergyRuleIv.setImageResource(R.drawable.icon_doubt_white)
tabLayout.setBackgroundColor(R.color.transparent.toColor())
sizeContainer.setBackgroundColor(R.color.transparent.toColor())
@@ -169,7 +169,15 @@ class EnergyHouseFragment: BaseLazyFragment() {
} else {
EnergyTaskTitle.visibility = View.VISIBLE
EnergyTaskContainer.visibility = View.VISIBLE
- EnergyTaskMore.setOnClickListener { requireContext().startActivity(EnergyCenterActivity.getIntent(requireContext())) }
+ EnergyTaskMore.setOnClickListener {
+ IntegralLogHelper.run {
+ log("click_energy_center", LOCATION, "光能屋-更多")
+ log("view_energy_center", "光能中心")
+ log("click_more", LOCATION)
+ }
+
+ requireContext().startActivity(EnergyCenterActivity.getIntent(requireContext()))
+ }
EnergyTaskContainer.layoutManager = LinearLayoutManager(requireContext(), RecyclerView.HORIZONTAL, false)
EnergyTaskContainer.adapter = HorizontalTaskAdapter(requireContext(), "光能屋", mTasks)
}
@@ -190,7 +198,7 @@ class EnergyHouseFragment: BaseLazyFragment() {
val commodityListFragment = childFragmentManager.findFragmentByTag("$tag$index")
?: CommodityFragment().with(bundleOf(
EntranceUtils.KEY_ENTRANCE to "光能屋",
- EntranceUtils.KEY_CATEGORY_ID to entity.id))
+ EntranceUtils.KEY_CATEGORY to entity))
mFragments.add(commodityListFragment)
}
@@ -228,6 +236,17 @@ class EnergyHouseFragment: BaseLazyFragment() {
override fun onTabSelected(tab: TabLayout.Tab?) {
updateTabStyle(tab, true)
+ tab?.run {
+ mCommodityCategories?.get(position)?.run {
+ IntegralLogHelper.logCommodityCategory(
+ "click_tab_goods_catalog",
+ "光能屋",
+ "光能屋-商品分类",
+ id,
+ name
+ )
+ }
+ }
}
})
}
@@ -273,6 +292,7 @@ class EnergyHouseFragment: BaseLazyFragment() {
tv.text = size.text
item.setOnClickListener {
if (mCurrentSizeIndex != index) {
+ IntegralLogHelper.logEnergyRange("click_energy_number_filter", LOCATION, size.text ?: "")
changeSizeBg(index)
(mFragments[viewpager.currentItem] as CommodityFragment).refreshPage(size)
mCurrentSizeIndex = index
@@ -302,7 +322,8 @@ class EnergyHouseFragment: BaseLazyFragment() {
fun getCurrentSize() = mCurrentSize
- @OnClick(R.id.backIv, R.id.userIcon, R.id.userName, R.id.userEnergy, R.id.energyRecord, R.id.energyOrder)
+ @OnClick(R.id.backIv, R.id.userIcon, R.id.userName, R.id.userEnergy, R.id.exchangeRuleTv, R.id.exchangeCommodity,
+ R.id.lotteryParadise, R.id.rollNotice)
fun onViewClicked(v: View) {
when (v.id) {
R.id.backIv -> requireActivity().finish()
@@ -312,22 +333,51 @@ class EnergyHouseFragment: BaseLazyFragment() {
R.id.userName -> ifLogin("光能屋-立即登录")
R.id.userEnergy -> {
- mUserInfo?.run {
- DialogUtils.showEnergyDialog(requireContext(), name, mEnergy)
+ IntegralLogHelper.run {
+ log("click_energy_record", LOCATION, "光能屋-光能值")
+ log("view_energy_record", "光能明细")
+ log("click_energy", LOCATION)
+ }
+
+ ifLogin("光能屋-光能值") {
+ DirectUtils.directToEnergyRecord(requireContext())
}
}
- R.id.energyRecord -> {
- ifLogin("光能屋-光能记录") {
- DirectUtils.directToEnergyRecord(requireContext(), 1)
+ R.id.exchangeRuleTv -> {
+ IntegralLogHelper.run {
+ log("click_exchange_rule", LOCATION)
+ log("view_exchange_rule", "兑换规则")
}
}
- R.id.energyOrder -> {
- ifLogin("光能屋-订单中心") {
- DirectUtils.directToOrderCenter(requireContext())
+ R.id.exchangeCommodity -> {
+ IntegralLogHelper.run {
+ log("click_exchange_record", LOCATION)
+ log("view_exchange_record", "兑换商品")
}
+ ifLogin("光能屋-兑换商品") {
+
+ }
+ }
+
+ R.id.lotteryParadise -> {
+ IntegralLogHelper.run {
+ log("click_draw_center", LOCATION)
+ log("view_raffle_center", "抽奖乐园页")
+ }
+ ifLogin("光能屋-抽奖乐园") {
+
+ }
+ }
+
+ R.id.rollNotice -> {
+ IntegralLogHelper.log("click_store_scroll_bar", LOCATION)
}
}
}
+
+ companion object {
+ const val LOCATION = "光能屋"
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/gamecenter/energy/HorizontalTaskAdapter.kt b/app/src/main/java/com/gh/gamecenter/energy/HorizontalTaskAdapter.kt
index 2a27fc44ea..80a09665e5 100644
--- a/app/src/main/java/com/gh/gamecenter/energy/HorizontalTaskAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/energy/HorizontalTaskAdapter.kt
@@ -5,6 +5,7 @@ import android.content.Context
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import com.gh.base.BaseRecyclerViewHolder
+import com.gh.common.constant.Constants
import com.gh.common.util.*
import com.gh.gamecenter.R
import com.gh.gamecenter.databinding.NoviceTaskItemBinding
@@ -49,6 +50,15 @@ class HorizontalTaskAdapter(context: Context,
}
root.setOnClickListener {
+ task.run {
+ IntegralLogHelper.logTask(
+ "click_mission",
+ entrance,
+ taskId,
+ name,
+ "新手任务")
+ }
+
CheckLoginUtils.checkLogin(mContext, entrance) {
when (task.status) {
"normal" -> {
@@ -65,6 +75,7 @@ class HorizontalTaskAdapter(context: Context,
}
}
} else {
+ SPUtils.setBoolean(Constants.SP_SHOW_TASK_FLOAT, true)
DirectUtils.directToLinkPage(mContext, task.link, entrance, "")
}
}
diff --git a/app/src/main/java/com/gh/gamecenter/energy/TaskAdapter.kt b/app/src/main/java/com/gh/gamecenter/energy/TaskAdapter.kt
index ba655e7301..9a42ee48a9 100644
--- a/app/src/main/java/com/gh/gamecenter/energy/TaskAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/energy/TaskAdapter.kt
@@ -8,6 +8,7 @@ import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.gh.base.BaseRecyclerViewHolder
+import com.gh.common.constant.Constants
import com.gh.common.constant.ItemViewType
import com.gh.common.util.*
import com.gh.gamecenter.R
@@ -19,7 +20,7 @@ import com.gh.gamecenter.manager.UserManager
class TaskAdapter(context: Context) : ListAdapter(context) {
- private val mEntrance = "光能屋-任务列表"
+ private val mEntrance = "光能中心-任务列表"
override fun getItemCount(): Int {
return if (mEntityList.isNullOrEmpty()) 0 else mEntityList.size + FOOTER_ITEM_COUNT
@@ -139,6 +140,15 @@ class TaskAdapter(context: Context) : ListAdapter(context) {
}
root.setOnClickListener {
+ task.run {
+ IntegralLogHelper.logTask(
+ "click_mission",
+ "光能中心",
+ taskId,
+ name,
+ if (isFixed) "常驻任务" else "日常任务")
+ }
+
CheckLoginUtils.checkLogin(mContext, mEntrance) {
when (task.status) {
"normal" -> {
@@ -155,13 +165,12 @@ class TaskAdapter(context: Context) : ListAdapter(context) {
}
}
} else {
+ SPUtils.setBoolean(Constants.SP_SHOW_TASK_FLOAT, true)
DirectUtils.directToLinkPage(mContext, task.link, mEntrance, "")
}
}
- "limiting" -> {
- DirectUtils.directToLinkPage(mContext, task.link, mEntrance, "")
- }
+ "limiting" -> ToastUtils.toast(R.string.limiting_tip.toResString())
// "finished" -> {}
}
diff --git a/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java
index 8c6f1a51ba..d9b1bacef2 100644
--- a/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java
+++ b/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java
@@ -38,6 +38,7 @@ import com.gh.common.util.EntranceUtils;
import com.gh.common.util.ExtensionsKt;
import com.gh.common.util.HomeBottomBarHelper;
import com.gh.common.util.ImageUtils;
+import com.gh.common.util.IntegralLogHelper;
import com.gh.common.util.LogUtils;
import com.gh.common.view.ReserveDialog;
import com.gh.common.view.WelcomeDialog;
@@ -476,6 +477,7 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem
break;
case INDEX_PERSONAL:
tabText = "我的光环";
+ IntegralLogHelper.INSTANCE.log("view_me", "我的光环");
break;
}
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 12b5afd6f7..0900620a4a 100644
--- a/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java
+++ b/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java
@@ -26,6 +26,7 @@ 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.IntegralLogHelper;
import com.gh.common.util.LogUtils;
import com.gh.common.util.MtaHelper;
import com.gh.download.DownloadManager;
@@ -276,6 +277,9 @@ public class SearchToolbarFragment extends BaseLazyFragment implements View.OnCl
case R.id.actionbar_sign:
MtaHelper.onEvent("首页_点击", "顶栏", "签到");
DataCollectionUtils.uploadClick(getActivity(), "签到图标", "主页");
+ if ("首页".equals(mLocation) || "游戏库".equals(mLocation)) {
+ IntegralLogHelper.INSTANCE.log("click_sign", mLocation);
+ }
startActivity(EnergyCenterActivity.Companion.getIntent(requireContext(), true));
break;
diff --git a/app/src/main/java/com/gh/gamecenter/personal/NewPersonalFragment.java b/app/src/main/java/com/gh/gamecenter/personal/NewPersonalFragment.java
index 06ebc9b4bd..9b0083c262 100644
--- a/app/src/main/java/com/gh/gamecenter/personal/NewPersonalFragment.java
+++ b/app/src/main/java/com/gh/gamecenter/personal/NewPersonalFragment.java
@@ -32,6 +32,7 @@ import com.gh.common.util.DirectUtils;
import com.gh.common.util.DisplayUtils;
import com.gh.common.util.EntranceUtils;
import com.gh.common.util.ImageUtils;
+import com.gh.common.util.IntegralLogHelper;
import com.gh.common.util.LogUtils;
import com.gh.common.util.LoginHelper;
import com.gh.common.util.MtaHelper;
@@ -112,8 +113,6 @@ public class NewPersonalFragment extends BaseLazyFragment {
AppBarLayout appbar;
@BindView(R.id.toolbar)
Toolbar toolbar;
- @BindView(R.id.personal_sign)
- ImageView mPersonalSign;
@BindView(R.id.personal_msg)
ImageView mPersonalMsg;
@BindView(R.id.login_message_hint)
@@ -427,21 +426,6 @@ public class NewPersonalFragment extends BaseLazyFragment {
mUnreadViewModel.getAddonsUnreadLiveData().observe(this, entity -> {
notifyItemChange("我的收藏", entity.getFavorite() > 0 ? FunctionalMessageType.NEW_MESSAGE : null);
});
-
- // 微信/签到
- RxView.clicks(mPersonalSign)
- .throttleFirst(1, TimeUnit.SECONDS)
- .subscribe(aVoid -> {
- if (CheckLoginUtils.isLogin()) {
- MtaHelper.onEvent("我的光环", "签到");
- MtaHelper.onEvent("我的光环_新", "签到", "点击签到");
- sign();
- } else {
- MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "签到");
- CheckLoginUtils.checkLogin(getContext(), "我的光环-签到", () -> {
- });
- }
- });
}
@Override
@@ -587,6 +571,7 @@ public class NewPersonalFragment extends BaseLazyFragment {
DirectUtils.directToBadgeWall(requireContext(), mUserInfoEntity.getUserId(), mUserInfoEntity.getName(), mUserInfoEntity.getIcon());
break;
case R.id.personal_receive_energy:
+ IntegralLogHelper.INSTANCE.log("click_energy", "我的光环");
if (mUserInfoEntity != null) {
MtaHelper.onEvent("我的光环_新", "领光能", "点击领光能");
startActivity(EnergyCenterActivity.Companion.getIntent(requireContext(), true));
@@ -595,6 +580,7 @@ public class NewPersonalFragment extends BaseLazyFragment {
}
break;
case R.id.personal_energy:
+ IntegralLogHelper.INSTANCE.log("click_sign", "我的光环");
if (mUserInfoEntity != null) {
MtaHelper.onEvent("我的光环_新", "光能值", "点击光能值");
DialogUtils.showEnergyDialog(requireContext(), mUserInfoEntity.getName(), mEnergy);
@@ -604,13 +590,19 @@ public class NewPersonalFragment extends BaseLazyFragment {
break;
case R.id.personal_energy_center:
MtaHelper.onEvent("我的光环_新", "光能中心", "进入光能中心");
+ IntegralLogHelper.INSTANCE.log("click_energy_center", "我的光环", "我的光环-光能中心");
+ IntegralLogHelper.INSTANCE.log("view_energy_center", "光能中心");
requireContext().startActivity(EnergyCenterActivity.Companion.getIntent(requireContext()));
break;
case R.id.personal_energy_house:
MtaHelper.onEvent("我的光环_新", "光能屋", "进入光能屋");
+ IntegralLogHelper.INSTANCE.log("click_energy_store", "我的光环", "我的光环-光能屋");
+ IntegralLogHelper.INSTANCE.log("view_energy_store", "光能屋");
requireContext().startActivity(EnergyHouseActivity.Companion.getIntent(requireContext()));
break;
case R.id.personal_energy_record:
+ IntegralLogHelper.INSTANCE.log("click_energy_record", "我的光环", "我的光环-光能明细");
+ IntegralLogHelper.INSTANCE.log("view_energy_record", "光能明细");
if (mUserInfoEntity != null) {
MtaHelper.onEvent("我的光环_新", "光能记录", "进入光能记录");
DirectUtils.directToEnergyRecord(requireContext());
@@ -653,54 +645,6 @@ public class NewPersonalFragment extends BaseLazyFragment {
}
}
- private void sign() {
- RetrofitManager.getInstance(getContext()).getApi()
- .postSign(UserManager.getInstance().getUserId())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Response() {
- @Override
- public void onResponse(SignEntity signEntity) {
- mPersonalSign.setImageDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.personal_sign_icon_yellow));
- if (isCanSign(signEntity.getLastTime())) {
- DialogUtils.showSignDialog(getContext(), "签到成功,获得经验:1"
- , getString(R.string.sign_dialog_content, signEntity.getSerialSign())
- , getString(R.string.sign_dialog_content2, signEntity.getExperience())
- , getSignSkipText(signEntity.getTitle()), () -> {
- signSkip(signEntity);
- }
- );
- signEntity.setLastTime(System.currentTimeMillis() / 1000);
- } else {
- DialogUtils.showSignDialog(getContext(), "今天已签到,明天再来吧~"
- , getString(R.string.sign_dialog_content, signEntity.getSerialSign())
- , getString(R.string.sign_dialog_content2, signEntity.getExperience())
- , getSignSkipText(signEntity.getTitle()), () -> {
- signSkip(signEntity);
- }
- );
- }
-
- signEntity.setId(UserManager.getInstance().getUserId());
- if (mDatabase.signDao().updateSignEntity(signEntity) <= 0) {
- try {
- mDatabase.signDao().addSignEntity(signEntity);
- } catch (SQLiteException e) {
- e.printStackTrace();
- }
- }
- }
-
- @Override
- public void onFailure(HttpException e) {
- if (e == null || e.code() != 401) {
- toast(R.string.loading_network_error);
- }
- }
- });
-
- }
-
private boolean isCanSign(long time) {
SimpleDateFormat formatDay = new SimpleDateFormat("dd", Locale.CHINA);
@@ -766,12 +710,6 @@ public class NewPersonalFragment extends BaseLazyFragment {
private void changeLoginState(boolean isLogin) {
if (isLogin) {
- SignEntity signEntity = mDatabase.signDao().getSignEntityById(UserManager.getInstance().getUserId());
- if (signEntity != null && !isCanSign(signEntity.getLastTime())) {
- mPersonalSign.setImageDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.personal_sign_icon_yellow));
- } else {
- mPersonalSign.setImageDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.personal_sign_icon_white));
- }
if (mUserInfoEntity != null) {
mUserIcon.display(mUserInfoEntity.getIconBorder() == null ? "" : mUserInfoEntity.getIconBorder().getUrl(),
mUserInfoEntity.getIcon(), mUserInfoEntity.getAuth() == null ? "" : mUserInfoEntity.getAuth().getIcon());
diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt
index 9c6aeffbc5..3dd252bfff 100644
--- a/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt
+++ b/app/src/main/java/com/gh/gamecenter/personalhome/UserHomeFragment.kt
@@ -213,6 +213,10 @@ class UserHomeFragment : NormalFragment() {
levelContainer.visibility = View.VISIBLE
levelContainer.setOnClickListener {
if (mUserHomeViewModel.userId == UserManager.getInstance().userId) {
+ IntegralLogHelper.run {
+ log("click_grade_label", LOCATION)
+ log("view_grade", "等级中心页")
+ }
DirectUtils.directToLevelPage(requireContext())
}
}
@@ -423,11 +427,13 @@ class UserHomeFragment : NormalFragment() {
// 跳转更换背景页
userChangeBgBtn.setOnClickListener {
+ IntegralLogHelper.log("click_change _background", LOCATION)
startActivity(PersonalityBackgroundActivity.getIntent(requireContext()))
}
// 个性签名
userIntroduce.setOnClickListener {
+ IntegralLogHelper.log("click_what's_up", LOCATION)
startActivity(UserInfoEditActivity.getIntent(context, UserViewModel.TYPE_INTRODUCE))
}
}
@@ -444,6 +450,7 @@ class UserHomeFragment : NormalFragment() {
regulationTestContainer.setOnClickListener {
if (::mPersonalEntity.isInitialized
&& mUserHomeViewModel.userId == UserManager.getInstance().userId) {
+ IntegralLogHelper.log("click_test_label", LOCATION)
DialogUtils.showPassRegulationDialog(requireContext(), mPersonalEntity.icon)
}
}
@@ -451,11 +458,16 @@ class UserHomeFragment : NormalFragment() {
// 徽章标签
badgeContainer.setOnClickListener {
if (::mPersonalEntity.isInitialized) {
+ IntegralLogHelper.log("click_badge_label", LOCATION)
directToBadgeWall(requireContext(), mPersonalEntity.id, mPersonalEntity.name, mPersonalEntity.icon)
}
}
userIcon.setOnClickListener {
+ IntegralLogHelper.run {
+ log("click_profile_photo", LOCATION)
+ log("view_pendant", "头像挂件页")
+ }
if (mUserHomeViewModel.userId == UserManager.getInstance().userId) {
MtaHelper.onEvent("个人主页详情", "个人主页详情", "头像")
startActivity(AvatarBorderActivity.getIntent(requireContext()))
@@ -465,18 +477,22 @@ class UserHomeFragment : NormalFragment() {
}
userFollowerContainer.setOnClickListener {
+ IntegralLogHelper.log("click_follow", LOCATION)
MtaHelper.onEvent("个人主页详情", "个人主页详情", "关注数")
startActivity(FollowersActivity.getIntent(requireContext(), mUserHomeViewModel.userId, mEntrance, mPath))
}
userFansContainer.setOnClickListener {
+ IntegralLogHelper.log("click_follower", LOCATION)
MtaHelper.onEvent("个人主页详情", "个人主页详情", "粉丝数")
requireContext().startActivity(FansActivity.getIntent(requireContext(), mUserHomeViewModel.userId, mEntrance, mPath))
}
userVoteContainer.setOnClickListener {
+ IntegralLogHelper.log("click_like", LOCATION)
MtaHelper.onEvent("个人主页详情", "个人主页详情", "赞同数")
Utils.toast(requireContext(), "共获得 " + NumberUtils.transSimpleCount(entity?.count?.vote!!) + " 赞同")
}
userEditBtn.setOnClickListener {
+ IntegralLogHelper.log("click_edit", LOCATION)
MtaHelper.onEvent("个人主页详情", "个人主页详情", "编辑按钮")
requireContext().startActivity(UserInfoActivity.getIntent(requireContext()))
}
@@ -523,9 +539,18 @@ class UserHomeFragment : NormalFragment() {
when (v.id) {
R.id.iv_back -> requireActivity().finish()
- R.id.iv_share -> shareUserHome()
+ R.id.iv_share -> {
+ IntegralLogHelper.log("click_share", LOCATION)
+ shareUserHome()
+ }
- R.id.iv_more -> showMorePopup()
+ R.id.iv_more -> {
+ IntegralLogHelper.run {
+ log("click_more", LOCATION)
+ log("view_panel-more", "更多面板")
+ }
+ showMorePopup()
+ }
}
}
@@ -541,11 +566,13 @@ class UserHomeFragment : NormalFragment() {
contentView.run {
findViewById(R.id.shareBtn)
.setOnClickListener {
+ IntegralLogHelper.log("click_share", "更多面板")
mPopupWindow.dismiss()
shareUserHome()
}
findViewById(R.id.reportBtn).setOnClickListener {
+ IntegralLogHelper.log("click_report", "更多面板")
mPopupWindow.dismiss()
DialogUtils.showReportReasonDialog(requireContext()) { reason, desc ->
mUserHomeViewModel.postReport(reason, desc)
@@ -589,4 +616,8 @@ class UserHomeFragment : NormalFragment() {
view.draw(canvas)
return bitmap
}
+
+ companion object {
+ const val LOCATION = "个人主页"
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderActivity.kt b/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderActivity.kt
index 9da71e87d0..85fd85b725 100644
--- a/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderActivity.kt
+++ b/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderActivity.kt
@@ -5,6 +5,7 @@ import android.content.Intent
import android.os.Bundle
import com.gh.base.BaseActivity
import com.gh.common.util.DisplayUtils
+import com.gh.common.util.EntranceUtils
import com.gh.gamecenter.R
class AvatarBorderActivity : BaseActivity() {
@@ -25,8 +26,12 @@ class AvatarBorderActivity : BaseActivity() {
}
companion object {
- fun getIntent(context: Context): Intent {
- return Intent(context, AvatarBorderActivity::class.java)
+ fun getIntent(context: Context, categoryName: String? = null): Intent {
+ return Intent(context, AvatarBorderActivity::class.java).apply {
+ categoryName?.let {
+ putExtra(EntranceUtils.KEY_CATEGORY_NAME, it)
+ }
+ }
}
}
diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderFragment.kt
index 0c42590f31..31209c6f5f 100644
--- a/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderFragment.kt
+++ b/app/src/main/java/com/gh/gamecenter/personalhome/border/AvatarBorderFragment.kt
@@ -32,15 +32,18 @@ import org.json.JSONObject
class AvatarBorderFragment : NormalFragment() {
- private lateinit var mUserViewModel: UserViewModel
- private lateinit var mAvatarBorderViewModel: AvatarBorderViewModel
- private lateinit var mAvatarBorderCategories: List
+ private var mUserViewModel: UserViewModel? = null
+ private var mAvatarBorderViewModel: AvatarBorderViewModel? = null
+ private var mAvatarBorderCategories: List? = null
+ private var mBinding: FragmentAvatarBorderBinding? = null
- lateinit var mBinding: FragmentAvatarBorderBinding
private var mPostDialog: WaitingDialogFragment? = null
var selectAvatarBorderEntity: AvatarBorderEntity? = null
private val mTitleList = ArrayList()
private val mFragments = ArrayList()
+ private var mCurrentIndex = 0
+ private var mInitTabName = ""
+ private var mInitTabIndex = 0
override fun getLayoutId() = 0
@@ -51,29 +54,36 @@ class AvatarBorderFragment : NormalFragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ mInitTabName = arguments?.getString(EntranceUtils.KEY_CATEGORY_NAME) ?: ""
mAvatarBorderViewModel = viewModelProvider()
mUserViewModel = viewModelProvider(UserViewModel.Factory(HaloApp.getInstance().application))
- mUserViewModel.loginObsUserinfo.observeNonNull(this) {
- if (it.data?.background?.url.isNullOrEmpty()) {
- ImageUtils.display(mBinding.forumBackground, R.drawable.bg_avatar_border)
- } else {
- ImageUtils.display(mBinding.forumBackground, it.data?.background?.url)
+ mUserViewModel?.loginObsUserinfo?.observeNonNull(this) {
+ mBinding?.run {
+ if (it.data?.background?.url.isNullOrEmpty()) {
+ ImageUtils.display(forumBackground, R.drawable.bg_avatar_border)
+ } else {
+ ImageUtils.display(forumBackground, it.data?.background?.url)
+ }
+ userAvatar.display(it.data?.iconBorder?.url, it.data?.icon ?: "")
}
- mBinding.userAvatar.display(it.data?.iconBorder?.url, it.data?.icon ?: "")
}
- mUserViewModel.editObsUserinfo.observe(this, Observer {
- mBinding.userAvatar.displayAvatar(it.data?.icon ?: "")
+
+ mUserViewModel?.editObsUserinfo?.observe(this, Observer {
+ mBinding?.run {
+ userAvatar.displayAvatar(it.data?.icon ?: "")
+ }
})
- mUserViewModel.uploadAvatarBorder.observe(this, Observer {
+
+ mUserViewModel?.uploadAvatarBorder?.observe(this, Observer {
mPostDialog?.dismiss()
if (it) {
EnergyTaskHelper.postEnergyTask("wear_avatar_frame")
requireActivity().finish()
- mUserViewModel.uploadAvatarBorder.value = false
+ mUserViewModel?.uploadAvatarBorder?.value = false
}
})
- mAvatarBorderViewModel.pendantCategories.observeNonNull(this) {
+ mAvatarBorderViewModel?.pendantCategories?.observeNonNull(this) {
if (it.isEmpty()) return@observeNonNull
mAvatarBorderCategories = it
initViewPager()
@@ -84,85 +94,107 @@ class AvatarBorderFragment : NormalFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- ViewCompat.setOnApplyWindowInsetsListener(mBinding.appbar) { _, insets ->
- (mBinding.toolbar.layoutParams as ViewGroup.MarginLayoutParams).topMargin = insets.systemWindowInsetTop
- insets.consumeSystemWindowInsets()
- }
-
- mBinding.toolbar.setNavigationOnClickListener { requireActivity().finish() }
-
- mBinding.collapsingToolbar.scrimShownAction = {
- DisplayUtils.setLightStatusBar(requireActivity(), it)
- if (it) {
- mBinding.titleTv.alpha = 1F
- mBinding.titleTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.black))
- mBinding.toolbar.navigationIcon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_bar_back)
- mBinding.toolbar.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.white))
- DisplayUtils.setStatusBarColor(requireActivity(), R.color.white, true)
- } else {
- mBinding.titleTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.white))
- mBinding.toolbar.navigationIcon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_toolbar_back_white)
- mBinding.toolbar.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.transparent))
- DisplayUtils.setStatusBarColor(requireActivity(), R.color.transparent, false)
+ mBinding?.run {
+ ViewCompat.setOnApplyWindowInsetsListener(appbar) { _, insets ->
+ (toolbar.layoutParams as ViewGroup.MarginLayoutParams).topMargin = insets.systemWindowInsetTop
+ insets.consumeSystemWindowInsets()
}
- }
- mBinding.userAvatar.setOnClickListener {
- startActivity(ImageViewerActivity.getIntent(requireContext(), arrayListOf(UserManager.getInstance().userInfoEntity?.icon
- ?: ""), 0, mBinding.userAvatar, "$mEntrance+(头像挂件)", true))
- }
+ toolbar.setNavigationOnClickListener { requireActivity().finish() }
- mBinding.changeAvatarTv.setOnClickListener {
- startActivity(SelectUserIconActivity.getIntent(context))
- }
-
- mBinding.commitTv.setOnClickListener {
- if (selectAvatarBorderEntity != null) {
- mPostDialog = WaitingDialogFragment.newInstance("加载中...")
- mPostDialog?.show(childFragmentManager, null)
-
- val jsonObject = JSONObject()
- if (mBinding.commitTv.text == "停用挂件") {
- jsonObject.put("_id", "")
- jsonObject.put("url", "")
- mUserViewModel.changeUserInfo(jsonObject.toString(), UserViewModel.TYPE_ICON_BORDER)
+ collapsingToolbar.scrimShownAction = {
+ DisplayUtils.setLightStatusBar(requireActivity(), it)
+ if (it) {
+ titleTv.alpha = 1F
+ titleTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.black))
+ toolbar.navigationIcon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_bar_back)
+ toolbar.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.white))
+ DisplayUtils.setStatusBarColor(requireActivity(), R.color.white, true)
} else {
- jsonObject.put("_id", selectAvatarBorderEntity?.id)
- jsonObject.put("url", selectAvatarBorderEntity?.url)
- mUserViewModel.changeUserInfo(jsonObject.toString(), UserViewModel.TYPE_ICON_BORDER)
+ titleTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.white))
+ toolbar.navigationIcon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_toolbar_back_white)
+ toolbar.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.transparent))
+ DisplayUtils.setStatusBarColor(requireActivity(), R.color.transparent, false)
+ }
+ }
+
+ userAvatar.setOnClickListener {
+ startActivity(ImageViewerActivity.getIntent(requireContext(), arrayListOf(UserManager.getInstance().userInfoEntity?.icon
+ ?: ""), 0, userAvatar, "$mEntrance+(头像挂件)", true))
+ }
+
+ changeAvatarTv.setOnClickListener {
+ IntegralLogHelper.log("click_change_profile_photo", "头像挂件页")
+ startActivity(SelectUserIconActivity.getIntent(context))
+ }
+
+ commitTv.setOnClickListener {
+ if (selectAvatarBorderEntity != null) {
+ mPostDialog = WaitingDialogFragment.newInstance("加载中...")
+ mPostDialog?.show(childFragmentManager, null)
+
+ val jsonObject = JSONObject()
+ if (commitTv.text == "停用挂件") {
+ IntegralLogHelper.logPendent(
+ "click_stop",
+ LOCATION,
+ selectAvatarBorderEntity!!.id,
+ mAvatarBorderCategories?.get(mCurrentIndex)?.id ?: ""
+ )
+
+ jsonObject.put("_id", "")
+ jsonObject.put("url", "")
+ mUserViewModel?.changeUserInfo(jsonObject.toString(), UserViewModel.TYPE_ICON_BORDER)
+ } else {
+ IntegralLogHelper.logPendent(
+ "click_use",
+ LOCATION,
+ selectAvatarBorderEntity!!.id,
+ mAvatarBorderCategories?.get(mCurrentIndex)?.id ?: ""
+ )
+
+ jsonObject.put("_id", selectAvatarBorderEntity?.id)
+ jsonObject.put("url", selectAvatarBorderEntity?.url)
+ mUserViewModel?.changeUserInfo(jsonObject.toString(), UserViewModel.TYPE_ICON_BORDER)
+ }
}
}
}
}
fun choosePendant(entity: AvatarBorderEntity, isSelected: Boolean) {
- if (isSelected) {
- selectAvatarBorderEntity = entity
- mBinding.userAvatar.displayBorder(entity.url)
- mBinding.commitTv.isEnabled = true
- if (entity.id == UserManager.getInstance().userInfoEntity?.iconBorder?.id) {
- mBinding.commitTv.text = "停用挂件"
+ mBinding?.run {
+ if (isSelected) {
+ selectAvatarBorderEntity = entity
+ userAvatar.displayBorder(entity.url)
+ commitTv.isEnabled = true
+ if (entity.id == UserManager.getInstance().userInfoEntity?.iconBorder?.id) {
+ commitTv.text = "停用挂件"
+ } else {
+ commitTv.text = "使用"
+ }
+ commitTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.white))
+ commitTv.background = ContextCompat.getDrawable(requireContext(), R.drawable.bg_notification_open_btn_style_2)
} else {
- mBinding.commitTv.text = "使用"
+ selectAvatarBorderEntity = null
+ userAvatar.displayBorder("")
+ commitTv.text = "使用"
+ commitTv.isEnabled = false
+ commitTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.text_cccccc))
+ commitTv.background = ContextCompat.getDrawable(requireContext(), R.drawable.border_round_eee_999)
}
- mBinding.commitTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.white))
- mBinding.commitTv.background = ContextCompat.getDrawable(requireContext(), R.drawable.bg_notification_open_btn_style_2)
- } else {
- selectAvatarBorderEntity = null
- mBinding.userAvatar.displayBorder("")
- mBinding.commitTv.text = "使用"
- mBinding.commitTv.isEnabled = false
- mBinding.commitTv.setTextColor(ContextCompat.getColor(requireContext(), R.color.text_cccccc))
- mBinding.commitTv.background = ContextCompat.getDrawable(requireContext(), R.drawable.border_round_eee_999)
}
}
private fun initViewPager() {
- mBinding.run {
+ mBinding?.run {
mTitleList.clear()
mFragments.clear()
val tag = "android:switcher:${viewpager.id}:"
- mAvatarBorderCategories.forEachIndexed { index, entity ->
+ mAvatarBorderCategories?.forEachIndexed { index, entity ->
+ if (mInitTabName.isNotBlank() && mInitTabName == entity.name) {
+ mInitTabIndex = index
+ }
mTitleList.add(entity.name)
val chooseAvatarBorderFragment = childFragmentManager.findFragmentByTag("$tag$index")
?: ChooseAvatarBorderFragment().with(bundleOf(
@@ -192,7 +224,9 @@ class AvatarBorderFragment : NormalFragment() {
tab.customView = tabView
}
- tabLayout.getTabAt(0)?.let { updateTabStyle(it, true) }
+ viewpager.currentItem = mInitTabIndex
+ tabLayout.getTabAt(mInitTabIndex)?.let { updateTabStyle(it, true) }
+
tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabReselected(tab: TabLayout.Tab?) {
updateTabStyle(tab, true)
@@ -204,8 +238,21 @@ class AvatarBorderFragment : NormalFragment() {
override fun onTabSelected(tab: TabLayout.Tab?) {
updateTabStyle(tab, true)
+ tab?.run {
+ mAvatarBorderCategories?.get(position)?.run {
+ IntegralLogHelper.logPendent(
+ "click_tab_pendant_catalog",
+ LOCATION,
+ id
+ )
+ }
+ }
}
})
+
+ viewpager.doOnPageSelected {
+ mCurrentIndex = it
+ }
}
}
@@ -229,6 +276,10 @@ class AvatarBorderFragment : NormalFragment() {
}
fun setBottomVisible(visible: Boolean) {
- mBinding.bottomContainer.visibility = if (visible) View.VISIBLE else View.GONE
+ mBinding?.bottomContainer?.visibility = if (visible) View.VISIBLE else View.GONE
+ }
+
+ companion object {
+ const val LOCATION = "头像挂件页"
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderAdapter.kt b/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderAdapter.kt
index d034019b89..ba87bfc125 100644
--- a/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderAdapter.kt
@@ -16,9 +16,10 @@ import com.lightgame.adapter.BaseRecyclerAdapter
import java.util.*
class ChooseAvatarBorderAdapter(context: Context,
- private val fragment: ChooseAvatarBorderFragment,
- private val isFree: Boolean,
- private val clickCallback: (entity: AvatarBorderEntity, isSelected: Boolean) -> Unit)
+ private val mFragment: ChooseAvatarBorderFragment,
+ private val mIsFree: Boolean,
+ private val mCategoryId: String,
+ private val mClickCallback: (entity: AvatarBorderEntity, isSelected: Boolean) -> Unit)
: BaseRecyclerAdapter(context) {
var entityList: ArrayList = arrayListOf()
@@ -44,13 +45,13 @@ class ChooseAvatarBorderAdapter(context: Context,
var isEnable = false
when {
// 普通挂件
- isFree -> {
+ mIsFree -> {
isEnable = true
holder.binding.descTv.visibility = View.GONE
}
// 商品挂件但未兑换或者已过期,显示光能
- !isFree && (borderEntity.expire == null
+ !mIsFree && (borderEntity.expire == null
|| (borderEntity.expire != null
&& borderEntity.expire!! < TimeUtil.currentTime())) -> {
isEnable = false
@@ -62,7 +63,7 @@ class ChooseAvatarBorderAdapter(context: Context,
}
// 商品挂件已兑换(expire=0代表永久可使用),显示有效期
- !isFree && borderEntity.expire != null
+ !mIsFree && borderEntity.expire != null
&& (borderEntity.expire!! == 0L
|| borderEntity.expire!! > TimeUtil.currentTime()) -> {
isEnable = true
@@ -84,29 +85,35 @@ class ChooseAvatarBorderAdapter(context: Context,
holder.binding.checkBorderView.visibleIf(SPUtils.getString(Constants.SP_CHOOSE_AVATAR_ID) == borderEntity.id)
if (SPUtils.getString(Constants.SP_CHOOSE_AVATAR_ID) == borderEntity.id) {
- fragment.setParentBottomVisible(isEnable)
+ mFragment.setParentBottomVisible(isEnable)
if (mIsFirstIn) {
- clickCallback.invoke(borderEntity, true)
+ mClickCallback.invoke(borderEntity, true)
mIsFirstIn = false
}
}
holder.itemView.setOnClickListener {
+ IntegralLogHelper.logPendent(
+ "click_pendant",
+ "头像挂件页",
+ borderEntity.id,
+ mCategoryId
+ )
// 根据是否可使用来决定是否显示底部的使用/停用按钮
- fragment.setParentBottomVisible(isEnable)
+ mFragment.setParentBottomVisible(isEnable)
if (isEnable) {
if (SPUtils.getString(Constants.SP_CHOOSE_AVATAR_ID) == borderEntity.id) {
SPUtils.setString(Constants.SP_CHOOSE_AVATAR_ID, "")
- clickCallback.invoke(borderEntity, false)
+ mClickCallback.invoke(borderEntity, false)
} else {
SPUtils.setString(Constants.SP_CHOOSE_AVATAR_ID, borderEntity.id)
- clickCallback.invoke(borderEntity, true)
+ mClickCallback.invoke(borderEntity, true)
}
holder.binding.checkIv.goneIf(SPUtils.getString(Constants.SP_CHOOSE_AVATAR_ID) != borderEntity.id)
holder.binding.checkBorderView.goneIf(SPUtils.getString(Constants.SP_CHOOSE_AVATAR_ID) != borderEntity.id)
notifyDataSetChanged()
} else {
- fragment.startActivityForResult(
+ mFragment.startActivityForResult(
EnergyHouseActivity.getIntent(mContext, borderEntity.categoryId),
ChooseAvatarBorderFragment.REQUEST_CODE)
}
diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderFragment.kt
index 97f992e407..3b1285eaed 100644
--- a/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderFragment.kt
+++ b/app/src/main/java/com/gh/gamecenter/personalhome/border/ChooseAvatarBorderFragment.kt
@@ -69,7 +69,9 @@ class ChooseAvatarBorderFragment : NormalFragment() {
mAdapter = ChooseAvatarBorderAdapter(
requireContext(),
this@ChooseAvatarBorderFragment,
- mIsFree)
+ mIsFree,
+ mCategoryId
+ )
{ entity, isSelected ->
val avatarPendantFragment = parentFragment as? AvatarBorderFragment
avatarPendantFragment?.choosePendant(entity, isSelected)
diff --git a/app/src/main/res/drawable-xxhdpi/bg_task_back.webp b/app/src/main/res/drawable-xxhdpi/bg_task_back.webp
new file mode 100644
index 0000000000..8d9c31832c
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/bg_task_back.webp differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_energy_more.png b/app/src/main/res/drawable-xxhdpi/ic_energy_more.png
new file mode 100644
index 0000000000..d102a99d28
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_energy_more.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_exchange_commodity.webp b/app/src/main/res/drawable-xxhdpi/ic_exchange_commodity.webp
new file mode 100644
index 0000000000..7327e26c79
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_exchange_commodity.webp differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_lottery_paradise.webp b/app/src/main/res/drawable-xxhdpi/ic_lottery_paradise.webp
new file mode 100644
index 0000000000..3b05fd9407
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_lottery_paradise.webp differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_sign_remind_close.webp b/app/src/main/res/drawable-xxhdpi/ic_sign_remind_close.webp
new file mode 100644
index 0000000000..7b1c8668c1
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_sign_remind_close.webp differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_sign_remind_success.webp b/app/src/main/res/drawable-xxhdpi/ic_sign_remind_success.webp
new file mode 100644
index 0000000000..9c99bb831d
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_sign_remind_success.webp differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_task_back.png b/app/src/main/res/drawable-xxhdpi/ic_task_back.png
new file mode 100644
index 0000000000..2a82a23de7
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_task_back.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/personal_sign_icon_gray.webp b/app/src/main/res/drawable-xxhdpi/personal_sign_icon_gray.webp
deleted file mode 100644
index 5bbd33b452..0000000000
Binary files a/app/src/main/res/drawable-xxhdpi/personal_sign_icon_gray.webp and /dev/null differ
diff --git a/app/src/main/res/layout/dialog_sign_remind_success.xml b/app/src/main/res/layout/dialog_sign_remind_success.xml
new file mode 100644
index 0000000000..07e9671afb
--- /dev/null
+++ b/app/src/main/res/layout/dialog_sign_remind_success.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_energy_center.xml b/app/src/main/res/layout/fragment_energy_center.xml
index 1dd1f9881a..3cd942428e 100644
--- a/app/src/main/res/layout/fragment_energy_center.xml
+++ b/app/src/main/res/layout/fragment_energy_center.xml
@@ -41,23 +41,37 @@
android:layout_centerVertical="true"
android:src="@drawable/ic_toolbar_back_white" />
-
+ android:orientation="horizontal"
+ android:background="@drawable/button_round_806f9cef">
+
+
+
+
+
-
-
-
-
+ app:layout_constraintTop_toBottomOf="@+id/exchangeCommodity" />
diff --git a/app/src/main/res/layout/fragment_new_personal.xml b/app/src/main/res/layout/fragment_new_personal.xml
index 123f4a11d8..eb74349e78 100644
--- a/app/src/main/res/layout/fragment_new_personal.xml
+++ b/app/src/main/res/layout/fragment_new_personal.xml
@@ -372,15 +372,6 @@
android:textSize="14sp"
tools:text="姓名" />
-
-
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2315633acc..81aa3e14af 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -779,7 +779,7 @@
领光能
光能中心
光能屋
- 光能记录
+ 光能明细
光能规则
赚光能
兑换规则
@@ -790,6 +790,8 @@
2、连续签满7天可额外奖励1次免费抽奖机会
又有光能可以收了
收能量兑大奖
+ 开启成功
+ 系统日历将准时提醒您签到
提示
填写邀请码需验证手机号绑定信息,检测\n到您未绑定手机(仅限新手机号绑定)