Commit 071a871d authored by wanglei's avatar wanglei

[拆包]首页

parent 9de782f1
......@@ -144,8 +144,10 @@ dependencies {
implementation("io.github.cymchad:BaseRecyclerViewAdapterHelper4:4.1.4")
implementation("com.github.angcyo.DslTablayout:TabLayout:3.7.1")
implementation("com.github.zhpanvip:viewpagerindicator:1.2.3")
implementation("nl.dionsegijn:konfetti-xml:2.0.5")
// implementation("nl.dionsegijn:konfetti-xml:2.0.5")
implementation("com.scwang.wave:MultiWaveHeader:1.0.0-andx")
implementation("com.github.angcyo.DslTablayout:TabLayout:3.7.1")
implementation("com.github.angcyo.DslTablayout:ViewPager2Delegate:3.7.1")
//lottie
......
......@@ -5,6 +5,7 @@ import com.base.appzxhy.BuildConfig
import com.base.appzxhy.SpConstObject.ifAgreePrivacy
import com.base.appzxhy.GlobalConfig
import com.base.appzxhy.bean.config.ConfigBean
import com.base.appzxhy.business.helper.InstallHelps.installEvent
import com.base.appzxhy.utils.AppPreferences
import com.base.appzxhy.utils.LogEx
import okhttp3.Call
......@@ -96,7 +97,10 @@ object EventUtils {
override fun onResponse(call: Call, response: Response) {
if (response.code == 200 && response.isSuccessful) {
LogEx.logDebug(TAG, "onResponse 200")
LogEx.logDebug(TAG, "onResponse 200 key=$key")
if (key == "install_referrer") {
installEvent = true
}
}
}
})
......
......@@ -2,10 +2,10 @@ package com.base.appzxhy.business.helper
import com.android.installreferrer.api.InstallReferrerClient
import com.android.installreferrer.api.InstallReferrerStateListener
import com.android.installreferrer.api.ReferrerDetails
import com.base.appzxhy.BuildConfig
import com.base.appzxhy.MyApplication
import com.base.appzxhy.utils.AppPreferences
import com.base.appzxhy.utils.LogEx
import org.json.JSONObject
/**
......@@ -15,45 +15,78 @@ object InstallHelps {
private val TAG = "InstallHelps"
var installReferrer = ""
get() {
return AppPreferences.getInstance().getString("install_referrer", field)
}
set(value) {
field = value
AppPreferences.getInstance().put("install_referrer", value, true)
}
//用户来源
var installSource = ""
get() {
return AppPreferences.getInstance().getString("install_source", field)
}
set(value) {
field = value
AppPreferences.getInstance().put("install_source", value, true)
}
//用户是否上报过
var installEvent = false
get() {
return AppPreferences.getInstance().getBoolean("installEvent", field)
}
set(value) {
field = value
AppPreferences.getInstance().put("installEvent", value, true)
}
fun eventInstallReferrer(response: ReferrerDetails) {
val obj = JSONObject()
obj.put("referrerUrl", response.installReferrer)
obj.put("referrerClickTime", response.referrerClickTimestampSeconds)
obj.put("appInstallTime", response.installBeginTimestampSeconds)
obj.put("instantExperienceLaunched", response.installReferrer.toString())
EventUtils.event("install_referrer", ext = obj)
}
fun init(requestCfg: () -> Unit) {
val installReferrer = AppPreferences.getInstance().getString("install_referrer", "")
if (installReferrer.isNotEmpty()) {
if (installEvent) {
requestCfg.invoke()
return
}
val referrerClient = InstallReferrerClient.newBuilder(MyApplication.appContext).build()
referrerClient.startConnection(object : InstallReferrerStateListener {
//当与 Google Play 的 Install Referrer 服务连接完成时回调
override fun onInstallReferrerSetupFinished(responseCode: Int) {
try {
when (responseCode) {
InstallReferrerClient.InstallReferrerResponse.OK -> {
val response = referrerClient.installReferrer
val installInfo = response.installReferrer
val obj = JSONObject()
obj.put("referrerUrl", response.installReferrer)
obj.put("referrerClickTime", response.referrerClickTimestampSeconds)
obj.put("appInstallTime", response.installBeginTimestampSeconds)
obj.put("instantExperienceLaunched", installInfo.toString())
EventUtils.event("install_referrer", ext = obj)
LogEx.logDebug(TAG, "referrerUrl=${response.installReferrer}")
AppPreferences.getInstance().put("install_referrer", response.installReferrer)
if (listOf(
eventInstallReferrer(response)
installReferrer = response.installReferrer
installSource = if (listOf(
"gclid",
"facebook",
"instagram"
).all { !installInfo.contains(it, true) }
).all { !response.installReferrer.contains(it, true) }
) {
//自然用户
if (BuildConfig.DEBUG) {
AppPreferences.getInstance().put("install_source", "channel")
"channel"
} else {
AppPreferences.getInstance().put("install_source", "origin")
"origin"
}
} else {
//渠道用户
AppPreferences.getInstance().put("install_source", "channel")
"channel"
}
requestCfg()
}
......@@ -70,6 +103,7 @@ object InstallHelps {
}
//当与 Install Referrer 服务的连接意外断开时回调
override fun onInstallReferrerServiceDisconnected() {
}
})
......
......@@ -8,6 +8,7 @@ import com.base.appzxhy.SpConstObject.useTypeEvent
import com.base.appzxhy.bean.config.AdConfigBean
import com.base.appzxhy.bean.config.ConfigBean
import com.base.appzxhy.bean.config.PopupConfigBean
import com.base.appzxhy.business.helper.InstallHelps.installReferrer
import com.base.appzxhy.utils.AppPreferences
import com.base.appzxhy.utils.LogEx
import com.google.gson.Gson
......@@ -55,7 +56,7 @@ object NewComUtils {
val appCode = packageName.substringAfter(PACKAGE_NAME_PREFIX).take(5).toLowerCase(Locale.getDefault())
val bRefer = Base64.encodeToString(
AppPreferences.getInstance().getString("install_referrer", "").toByteArray(),
installReferrer.toByteArray(),
Base64.DEFAULT
)
......
......@@ -13,6 +13,8 @@ import com.base.appzxhy.bean.DeviceInfoBean.Companion.PROCESSOR_INFORMATION
import com.base.appzxhy.bean.DeviceInfoBean.Companion.RAM_INFORMATION
import com.base.appzxhy.bean.DeviceInfoBean.Companion.ROM_INFORMATION
import com.base.appzxhy.bean.DeviceInfoBean.Companion.WIFI_INFORMATION
import com.base.appzxhy.business.ads.AdsMgr
import com.base.appzxhy.business.ads.AdsShowCallBack
import com.base.appzxhy.databinding.ActivityDeviceInfoBinding
import com.base.appzxhy.databinding.ItemDeviceInformationBinding
import com.base.appzxhy.ui.adapter.CommonViewHolder
......@@ -45,9 +47,13 @@ class DeviceInfoActivity : BaseActivity<ActivityDeviceInfoBinding>(ActivityDevic
itemBinding.ivIcon.setImageResource(item.iconRes)
itemBinding.tv.setText(item.titleRes)
itemBinding.root.setOnClickListener {
DeviceInfoKey = item.key
goToAc(DeviceInfoDetailActivity::class.java)
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
AdsMgr.showInsert(this@DeviceInfoActivity, showCallBack = object : AdsShowCallBack() {
override fun next() {
DeviceInfoKey = item.key
goToAc(DeviceInfoDetailActivity::class.java)
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left)
}
})
}
}
......
......@@ -9,11 +9,6 @@ import com.base.appzxhy.SpConstObject.scoreRate
import androidx.core.net.toUri
import com.base.appzxhy.SpConstObject.isScoreRated
import com.base.appzxhy.databinding.DialogRate1Binding
import nl.dionsegijn.konfetti.core.Angle
import nl.dionsegijn.konfetti.core.Party
import nl.dionsegijn.konfetti.core.Position
import nl.dionsegijn.konfetti.core.emitter.Emitter
import java.util.concurrent.TimeUnit
class RateDialog(
val activity: Activity
......
......@@ -3,6 +3,8 @@ package com.base.appzxhy.ui.main
import android.annotation.SuppressLint
import android.app.ActivityManager
import android.view.View
import android.widget.Toast
import androidx.appcompat.widget.TooltipCompat
import androidx.core.content.ContextCompat
import androidx.core.content.ContextCompat.getSystemService
import androidx.core.graphics.Insets
......@@ -40,6 +42,7 @@ import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
import kotlin.random.Random
class HomeFragment : BaseFragment<FragmentHome1Binding>(FragmentHome1Binding::inflate) {
private val adapter = FeatureItemAdapter()
......@@ -216,6 +219,8 @@ class HomeFragment : BaseFragment<FragmentHome1Binding>(FragmentHome1Binding::in
(requireActivity() as MainActivity).permissionStorageJump(JUNK_CLEAN)
}
adapter.itemClick = {
......
package com.base.appzxhy.ui.main
import android.os.Build
import android.view.LayoutInflater
import android.view.View
import android.widget.TextView
import androidx.appcompat.widget.TooltipCompat
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat
......@@ -33,7 +35,7 @@ import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayout.OnTabSelectedListener
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import androidx.core.graphics.toColorInt
import com.base.appzxhy.utils.LogEx
class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::inflate) {
......@@ -123,19 +125,21 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
val view = LayoutInflater.from(this).inflate(R.layout.item_home_tab, null)
val tabBinding = ItemHomeTabBinding.bind(view)
tabBinding.ivIcon.setImageResource(homeTab.icon)
tabBinding.ivIcon.isSelected=false
tabBinding.tvTab.text = homeTab.tab
// tabBinding.tvTab.setTextColor(ContextCompat.getColor(this, R.color.color_tab_home))
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
tabBinding.v.tooltipText = homeTab.tab
tabBinding.v.setOnLongClickListener {
false
}
}
tab.customView = tabBinding.root
tab.id = index
if (index == 1) {
tabBinding.vDian.visibility = View.VISIBLE
} else {
tabBinding.vDian.visibility = View.GONE
}
binding.tabLayout.addTab(tab)
}
binding.tabLayout.addOnTabSelectedListener(object : OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) {
LogEx.logDebug(TAG, "onTabSelected ${tab?.id}")
tab?.let {
if (binding.viewPager2.currentItem == tab.id) return
binding.viewPager2.setCurrentItem(tab.id, false)
......@@ -143,6 +147,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
}
override fun onTabUnselected(tab: TabLayout.Tab?) {
LogEx.logDebug(TAG, "onTabUnselected ${tab?.id}")
tab?.setUnselected()
}
......@@ -155,13 +160,15 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
fun TabLayout.Tab.setSelected() {
val textView = customView?.findViewById<TextView>(R.id.tv_tab)
textView?.setTextColor(
ContextCompat.getColor(this@MainActivity, R.color.colorPrimary)
ContextCompat.getColor(this@MainActivity, R.color.white)
)
}
fun TabLayout.Tab.setUnselected() {
val textView = customView?.findViewById<TextView>(R.id.tv_tab)
textView?.setTextColor("#A6A6A6".toColorInt())
textView?.setTextColor(
ContextCompat.getColor(this@MainActivity, R.color.black)
)
}
private fun initViewPager2() {
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#A3DBEB" />
<corners android:radius="@dimen/dp_38" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/colorPrimary" />
<corners android:radius="@dimen/dp_38" />
</shape>
\ No newline at end of file
......@@ -25,18 +25,27 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="@dimen/dp_52"
android:layout_gravity="center"
android:background="@color/white"
app:tabIndicatorHeight="0dp"
app:tabMinWidth="100dp"
android:layout_marginHorizontal="@dimen/dp_24"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_8"
android:background="@drawable/bg_a3dbeb_38"
android:visibility="visible"
app:tabIndicator="@drawable/indicator_main"
app:tabIndicatorColor="@color/colorPrimary"
app:tabIndicatorFullWidth="true"
app:tabIndicatorGravity="center"
app:tabIndicatorHeight="@dimen/dp_52"
app:tabMode="fixed"
app:tabRippleColor="@android:color/transparent"
tools:ignore="SpeakableTextPresentCheck" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
......
......@@ -149,6 +149,7 @@
android:background="@drawable/bg_stroke_ffffff_48"
android:foreground="?attr/selectableItemBackground"
android:gravity="center"
android:longClickable="true"
android:text="@string/clean"
android:textColor="@color/white"
android:textSize="@dimen/sp_14"
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical"
tools:ignore="UseCompoundDrawables">
<androidx.constraintlayout.widget.ConstraintLayout
<LinearLayout
android:id="@+id/ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp">
android:layout_gravity="center"
android:orientation="horizontal"
tools:ignore="UselessParent">
<ImageView
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/vDian"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription"
tools:src="@mipmap/ic_launcher" />
<View
android:id="@+id/vDian"
android:layout_width="6dp"
android:layout_height="6dp"
android:layout_gravity="end|top"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:srcCompat="@drawable/tab_home_selector"
tools:ignore="ContentDescription" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/tv_tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/dp_5"
android:includeFontPadding="false"
android:text="@string/home"
android:textColor="@color/black"
android:textSize="@dimen/sp_19" />
</LinearLayout>
<TextView
android:id="@+id/tv_tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="3dp"
android:layout_marginBottom="8dp"
android:gravity="center"
android:textColor="#838383"
android:textSize="13sp" />
<View
android:id="@+id/v"
android:layout_gravity="center"
android:layout_width="@dimen/dp_8"
android:layout_height="@dimen/dp_8"/>
</LinearLayout>
\ No newline at end of file
</FrameLayout>
\ No newline at end of file
......@@ -70,4 +70,5 @@
<dimen name="dp__50">-50dp</dimen>
<dimen name="dp__25">-25dp</dimen>
<dimen name="dp_56">56dp</dimen>
<dimen name="dp_52">52dp</dimen>
</resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment