Commit eaee9777 authored by wanglei's avatar wanglei

[优化]installReferrer上报

parent d8fce1b1
This diff is collapsed.
......@@ -25,11 +25,13 @@ import java.util.Locale
import java.util.UUID
import com.dumpster.cleaner.SpConstObject.appLanguageSp
import com.dumpster.cleaner.SpConstObject.appLanguageCountrySp
import com.dumpster.cleaner.SpConstObject.appUuid
import com.dumpster.cleaner.business.ads.AdsMgr
import com.dumpster.cleaner.business.helper.NewComUtils.spConfig
import com.dumpster.cleaner.business.push.fcm.FCMManager
import com.dumpster.cleaner.business.push.notification.MyNotificationManager
import com.dumpster.cleaner.business.push.receiver.AlarmReceiver.Companion.startAlarm
import com.dumpster.cleaner.business.push.receiver.PackageReceiver
import com.dumpster.cleaner.business.push.receiver.ScreenStatusReceiver
import com.dumpster.cleaner.business.push.timer.TimerManager.Companion.changeTimer
import com.dumpster.cleaner.business.push.work.RepeatingWorker.Companion.schedulePeriodicWork
......@@ -100,8 +102,8 @@ class MyApplication : Application() {
private fun initGid() = MainScope().launch(Dispatchers.IO) {
try {
val info: AdvertisingIdClient.Info = AdvertisingIdClient.getAdvertisingIdInfo(applicationContext)
val advertisingId = info.id
AppPreferences.getInstance().put("gid", advertisingId)
val advertisingId = info.id ?: "null"
SpConstObject.gid = advertisingId
} catch (e: Exception) {
EventUtils.event("gid_exception")
}
......@@ -113,10 +115,10 @@ class MyApplication : Application() {
}
private fun initUUid() {
uuid = AppPreferences.getInstance().getString("uuid", "")
uuid = appUuid
if (TextUtils.isEmpty(uuid)) {
uuid = UUID.randomUUID().toString() + System.currentTimeMillis()
AppPreferences.getInstance().put("uuid", uuid)
appUuid = uuid
LogEx.logDebug(TAG, "uuid=$uuid")
}
LogEx.logDebug(TAG, "uuid=${AppPreferences.getInstance().getString("uuid", "")}")
......@@ -164,6 +166,7 @@ class MyApplication : Application() {
ScreenStatusReceiver.registerScreenStatusReceiver(this)
// PackageStatusReceiver.registerPackageStatusReceiver(this)
registerBatteryReceiver(this)
PackageReceiver.register(this)
//workManager
schedulePeriodicWork(appContext)
......@@ -194,7 +197,7 @@ class MyApplication : Application() {
private var lastTimePause = 0L
private var lastTimeResume = 0L
private fun isHotLaunch(): Boolean {
if ((lastTimeResume - lastTimePause) > 5000) {
if ((lastTimeResume - lastTimePause) > 3500) {
return true
}
return false
......
......@@ -5,6 +5,24 @@ import java.util.Locale
object SpConstObject {
var appUuid = ""
get() {
return AppPreferences.getInstance().getString("uuid_app", field)
}
set(value) {
field = value
AppPreferences.getInstance().put("uuid_app", value, true)
}
var gid=""
get() {
return AppPreferences.getInstance().getString("gid", field)
}
set(value) {
field = value
AppPreferences.getInstance().put("gid", value, true)
}
//是否已经点击start
var ifAgreePrivacy = false
......
......@@ -26,9 +26,9 @@ class FeatureBean(
fun isTodayUsedFunction(): Boolean {
return listOf(
val flag1 = getFunctionTodayUsed(BATTERY_INFO)
val flag2 = listOf(
JUNK_CLEAN,
BATTERY_INFO,
SCREENSHOT_CLEAN,
LARGE_FILE_CLEAN,
PHOTO_COMPRESSION,
......@@ -37,7 +37,8 @@ class FeatureBean(
RECOVERY_VIDEOS,
RECOVERY_AUDIOS,
RECOVERY_DOCUMENTS
).any { getFunctionTodayUsed(it) }
).filter { getFunctionTodayUsed(it) }.size < 2
return flag1 && flag2
}
/**
......
......@@ -4,8 +4,9 @@ import android.os.Build
import com.dumpster.cleaner.BuildConfig
import com.dumpster.cleaner.SpConstObject.ifAgreePrivacy
import com.dumpster.cleaner.GlobalConfig
import com.dumpster.cleaner.SpConstObject
import com.dumpster.cleaner.bean.config.ConfigBean
import com.dumpster.cleaner.utils.AppPreferences
import com.dumpster.cleaner.business.helper.InstallHelps.installEvent
import com.dumpster.cleaner.utils.LogEx
import okhttp3.Call
import okhttp3.Callback
......@@ -49,8 +50,8 @@ object EventUtils {
jsonObject.put("${packageName}_4", Build.MANUFACTURER) // 手机厂商
jsonObject.put("${packageName}_5", Build.VERSION.SDK_INT) // android系统版本号
jsonObject.put("${packageName}_8", BuildConfig.VERSION_NAME) // APP版本号,如:1.1.2
jsonObject.put("${packageName}_9", AppPreferences.getInstance().getString("uuid", "")) // Android id
jsonObject.put("${packageName}_10", AppPreferences.getInstance().getString("gid", "")) // Google advertiser id
jsonObject.put("${packageName}_9", SpConstObject.appUuid) // Android id
jsonObject.put("${packageName}_10", SpConstObject.gid) // Google advertiser id
jsonObject.put("${packageName}_13", "android") // platform 默认android
jsonObject.put("${packageName}_14", BuildConfig.VERSION_CODE)// android版本,如:13
jsonObject.put("${packageName}_15", "google") // 渠道标识
......@@ -96,6 +97,9 @@ object EventUtils {
override fun onResponse(call: Call, response: Response) {
if (response.code == 200 && response.isSuccessful) {
LogEx.logDebug(TAG, "onResponse 200")
if (key == "install_referrer") {
installEvent = true
}
}
}
})
......
......@@ -2,10 +2,10 @@ package com.dumpster.cleaner.business.helper
import com.android.installreferrer.api.InstallReferrerClient
import com.android.installreferrer.api.InstallReferrerStateListener
import com.android.installreferrer.api.ReferrerDetails
import com.dumpster.cleaner.BuildConfig
import com.dumpster.cleaner.MyApplication
import com.dumpster.cleaner.utils.AppPreferences
import com.dumpster.cleaner.utils.LogEx
import org.json.JSONObject
/**
......@@ -15,10 +15,48 @@ 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
}
......@@ -31,31 +69,26 @@ object InstallHelps {
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(
installReferrer = response.installReferrer
eventInstallReferrer(response)
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()
}
......
......@@ -11,6 +11,7 @@ import com.dumpster.cleaner.bean.FeatureBean.Companion.SCREENSHOT_CLEAN
import com.dumpster.cleaner.bean.FeatureBean.Companion.SIMILAR_PHOTOS
import com.dumpster.cleaner.bean.push.NotificationSendBean
import com.dumpster.cleaner.bean.push.NotificationSendBean.Companion.POPUP_WHERE_WORK_MANAGER
import com.dumpster.cleaner.bean.push.NotificationSendBean.Companion.POPUP_WHERE_PACKAGE
import com.dumpster.cleaner.bean.config.PopupConfigBean.Companion.popupConfigBean
import com.dumpster.cleaner.bean.push.NotificationSendBean.Companion.POPUP_WHERE_ALARM
import com.dumpster.cleaner.bean.push.NotificationSendBean.Companion.POPUP_WHERE_LOCK
......@@ -193,10 +194,11 @@ object MyNotificationManager {
* 值测某些类型
*/
private var testWhere = listOf(
POPUP_WHERE_TIMER,
POPUP_WHERE_LOCK,
POPUP_WHERE_ALARM,
POPUP_WHERE_WORK_MANAGER
// POPUP_WHERE_TIMER,
// POPUP_WHERE_LOCK,
// POPUP_WHERE_ALARM,
// POPUP_WHERE_WORK_MANAGER,
POPUP_WHERE_PACKAGE,
)
private val looper_actionId = listOf(
// ACTION_ID_TEST,
......
......@@ -47,7 +47,8 @@ object NotificationUiUtil {
intent.putExtra("notificationId", sendBean.notificationId)
sendBean.intent = intent
val testNotificationId = if (BuildConfig.DEBUG) "${sendBean.notificationId}_${sendBean.actionId}_" else ""
// val testNotificationId = if (BuildConfig.DEBUG) "${sendBean.notificationId}_${sendBean.actionId}_" else ""
val testNotificationId = ""
var debugAction: (remoteViews: RemoteViews) -> Unit = { remoteViews ->
if (BuildConfig.DEBUG) {
remoteViews.setTextViewText(R.id.tv_btn, sendBean.where)
......@@ -59,6 +60,7 @@ object NotificationUiUtil {
val text = testNotificationId + "Clean up the junk files on your phone now!"
sendBean.smallRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_small).apply {
setTextViewText(R.id.tv1, text)
setImageViewResource(R.id.ivIcon, R.drawable.icon_clean_push)
debugAction.invoke(this)
}
sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply {
......@@ -72,6 +74,7 @@ object NotificationUiUtil {
val text = testNotificationId + "Check your phone battery consumption recently!"
sendBean.smallRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_small).apply {
setTextViewText(R.id.tv1, text)
setImageViewResource(R.id.ivIcon, R.drawable.icon_battery_info_push)
debugAction.invoke(this)
}
sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply {
......@@ -85,6 +88,7 @@ object NotificationUiUtil {
val text = testNotificationId + "Clear out large files to free up your storage space!"
sendBean.smallRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_small).apply {
setTextViewText(R.id.tv1, text)
setImageViewResource(R.id.ivIcon, R.drawable.icon_large_file_cleaner_push)
debugAction.invoke(this)
}
sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply {
......@@ -98,6 +102,7 @@ object NotificationUiUtil {
val text = testNotificationId + "Clean Up Similar Photos – Save Space!"
sendBean.smallRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_small).apply {
setTextViewText(R.id.tv1, text)
setImageViewResource(R.id.ivIcon, R.drawable.icon_similar_pictures_push)
debugAction.invoke(this)
}
sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply {
......@@ -111,6 +116,7 @@ object NotificationUiUtil {
val text = testNotificationId + "Free up space by clearing screenshot clutter!"
sendBean.smallRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_small).apply {
setTextViewText(R.id.tv1, text)
setImageViewResource(R.id.ivIcon, R.drawable.icon_screenshot_clean_push)
debugAction.invoke(this)
}
sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply {
......@@ -124,6 +130,7 @@ object NotificationUiUtil {
val text = testNotificationId + "Free up your phone storage space by compressing photos."
sendBean.smallRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_small).apply {
setTextViewText(R.id.tv1, text)
setImageViewResource(R.id.ivIcon, R.drawable.icon_compression_push)
debugAction.invoke(this)
}
sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply {
......
package com.dumpster.cleaner.business.push.receiver
import android.app.NotificationManager
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Build
import com.dumpster.cleaner.bean.push.NotificationSendBean
import com.dumpster.cleaner.bean.push.NotificationSendBean.Companion.POPUP_WHERE_PACKAGE
import com.dumpster.cleaner.business.push.notification.MyNotificationManager
class PackageReceiver : BroadcastReceiver() {
companion object {
fun register(context: Context) {
val intentFilter = IntentFilter().apply {
addAction(Intent.ACTION_PACKAGE_REMOVED)
addAction(Intent.ACTION_PACKAGE_ADDED)
addDataScheme("package")
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
context.registerReceiver(PackageReceiver(), intentFilter, Context.RECEIVER_EXPORTED)
} else {
context.registerReceiver(PackageReceiver(), intentFilter)
}
}
}
override fun onReceive(context: Context, intent: Intent?) {
MyNotificationManager.submitSendBean(NotificationSendBean(context, POPUP_WHERE_PACKAGE))
}
}
\ No newline at end of file
......@@ -9,11 +9,13 @@ import com.dumpster.cleaner.R
import com.dumpster.cleaner.base.BaseActivity
import com.dumpster.cleaner.base.jumpAction
import com.dumpster.cleaner.bean.FeatureBean.Companion.JUNK_CLEAN
import com.dumpster.cleaner.business.ads.AdEvent
import com.dumpster.cleaner.business.ads.AdsMgr
import com.dumpster.cleaner.business.ads.AdsShowCallBack
import com.dumpster.cleaner.business.ads.LimitUtils
import com.dumpster.cleaner.business.ads.admob.AdmobEvent
import com.dumpster.cleaner.databinding.ActivityLayoutCleanGuideBinding
import com.dumpster.cleaner.ui.dialog.StoragePermissionDialog
import com.dumpster.cleaner.ui.dialog.permissionStorageJump
import com.dumpster.cleaner.ui.main.MainActivity
import com.dumpster.cleaner.utils.BarUtils
import com.dumpster.cleaner.utils.PermissionUtils.checkStorePermission
......@@ -60,6 +62,8 @@ class CleanGuideActivity : BaseActivity<ActivityLayoutCleanGuideBinding>(Activit
requestStoragePermission(launcher) {
if (it) {
jump.invoke()
} else {
binding.idSkip.callOnClick()
}
}
}
......
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/ny">
<target
android:name="button"
android:animation="@drawable/pvxq"/>
<target
android:name="circle"
android:animation="@drawable/okaq"/>
</animated-vector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="40dp"
android:width="327dp"
android:viewportWidth="327"
android:viewportHeight="44">
<group
android:name="button"
android:pivotX="163.5"
android:pivotY="20">
<path
android:fillColor="@color/colorPrimary"
android:pathData="M24,0L303,0A24,22 0,0 1,327 22L327,22A24,22 0,0 1,303 44L24,44A24,22 0,0 1,0 22L0,22A24,22 0,0 1,24 0z"/>
<!-- <path-->
<!-- android:fillColor="#ffffff"-->
<!-- android:pathData="M305,22m-18,0a18,18 0,1 1,36 0a18,18 0,1 1,-36 0"/>-->
<!-- <path-->
<!-- android:fillColor="#00000000"-->
<!-- android:pathData="M302.5,16L308.5,22L302.5,28"-->
<!-- android:strokeColor="@color/colorPrimary"-->
<!-- android:strokeWidth="2"-->
<!-- android:strokeLineCap="round"-->
<!-- android:strokeLineJoin="round"/>-->
<group android:name="foreground_button">
<clip-path android:pathData="M24,0L303,0A24,22 0,0 1,327 22L327,22A24,22 0,0 1,303 44L24,44A24,22 0,0 1,0 22L0,22A24,22 0,0 1,24 0z"/>
<group
android:name="circle"
android:pivotX="163.5"
android:pivotY="22">
<path
android:fillColor="#33ffffff"
android:pathData=" M0,0 A164.973483,164.973483 0 1,1 327,44 A164.973483,164.973483 0 1,1 0,0 Z"/>
</group>
</group>
</group>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/b2x">
<target
android:name="button"
android:animation="@drawable/tjkg"/>
<target
android:name="circle"
android:animation="@drawable/r3yb"/>
</animated-vector>
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="36dp"
android:width="80dp"
android:viewportWidth="80"
android:viewportHeight="36">
<group
android:name="button"
android:pivotX="40"
android:pivotY="18">
<path
android:fillColor="@color/colorPrimary"
android:pathData="M10,0L70,0A10,10 0,0 1,80 10L80,26A10,10 0,0 1,70 36L10,36A10,10 0,0 1,0 26L0,10A10,10 0,0 1,10 0z"/>
<group android:name="foreground_button">
<clip-path android:pathData="M10,0L70,0A10,10 0,0 1,80 10L80,26A10,10 0,0 1,70 36L10,36A10,10 0,0 1,0 26L0,10A10,10 0,0 1,10 0z"/>
<group
android:name="circle"
android:pivotX="40"
android:pivotY="18">
<path
android:fillColor="#33ffffff"
android:pathData=" M0,0 A43.863425,43.863425 0 1,1 80,36 A43.863425,43.863425 0 1,1 0,0 Z"/>
</group>
</group>
</group>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:ordering="together">
<objectAnimator
android:duration="1000"
android:startOffset="0"
android:repeatCount="infinite"
android:repeatMode="restart"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="scaleX"/>
<objectAnimator
android:duration="1000"
android:startOffset="0"
android:repeatCount="infinite"
android:repeatMode="restart"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="scaleY"/>
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:ordering="together">
<objectAnimator
android:duration="500"
android:startOffset="0"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:valueFrom="0.92"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="scaleX"/>
<objectAnimator
android:duration="500"
android:startOffset="0"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:valueFrom="0.92"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="scaleY"/>
</set>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:ordering="together">
<objectAnimator
android:duration="1000"
android:startOffset="0"
android:repeatCount="infinite"
android:repeatMode="restart"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="scaleX"/>
<objectAnimator
android:duration="1000"
android:startOffset="0"
android:repeatCount="infinite"
android:repeatMode="restart"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="scaleY"/>
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:ordering="together">
<objectAnimator
android:duration="500"
android:startOffset="0"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:valueFrom="0.98"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="scaleX"/>
<objectAnimator
android:duration="500"
android:startOffset="0"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:valueFrom="0.98"
android:valueTo="1"
android:valueType="floatType"
android:propertyName="scaleY"/>
</set>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="@drawable/white_background">
android:layout_height="wrap_content"
android:background="@drawable/bg_ffffff_8"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center_vertical"
tools:ignore="UseCompoundDrawables">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="16dp"
android:layout_weight="1"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="26dp"
android:layout_height="26dp"
android:layout_marginStart="12dp"
android:layout_marginEnd="8dp"
android:src="@mipmap/logo"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/ivIcon"
android:layout_width="@dimen/dp_40"
android:layout_height="@dimen/dp_40"
android:src="@mipmap/logo"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:textColor="#000000"
android:textSize="12sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:layout_marginEnd="6dp"
android:orientation="vertical">
</LinearLayout>
<TextView
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
android:text="notification_junk_clean"
android:textColor="@color/color_181b1f"
android:textSize="16sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<ImageView
android:id="@+id/ivIcon"
android:layout_width="@dimen/dp_40"
android:layout_height="@dimen/dp_40"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_6"
android:src="@mipmap/logo"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tv2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:ellipsize="end"
android:maxLines="2"
android:textColor="@color/color_999999"
android:textSize="12sp"
android:visibility="gone"
tools:text="Are you sure you want to quit without trying to clean up the garbage again?" />
</LinearLayout>
<TextView
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:ellipsize="end"
android:gravity="center_horizontal"
android:maxLines="2"
android:text="notification_junk_clean"
android:textColor="@color/color_181b1f"
android:textSize="16sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="@dimen/dp_8"
android:layout_weight="1"
android:gravity="center">
<RelativeLayout
<ProgressBar
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center">
android:layout_height="wrap_content"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/gvv81" />
<TextView
android:id="@+id/tv_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:background="@drawable/bg_btn_50"
android:gravity="center"
android:paddingVertical="8dp"
android:text="@string/clean_now"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold" />
</RelativeLayout>
</LinearLayout>
<TextView
android:id="@+id/tv_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:gravity="center"
android:paddingVertical="8dp"
android:text="@string/clean_now"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold" />
</FrameLayout>
<TextView
android:id="@+id/tv_mark"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textColor="@color/colorPrimary"
android:textSize="16sp" />
</RelativeLayout>
\ No newline at end of file
</LinearLayout>
\ No newline at end of file
......@@ -18,9 +18,19 @@
android:orientation="horizontal"
tools:ignore="UselessParent">
<ImageView
android:id="@+id/ivIcon"
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_30"
android:src="@mipmap/logo"
tools:ignore="ContentDescription" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_6"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:orientation="vertical">
......@@ -49,17 +59,28 @@
tools:text="Are you sure you want to quit without trying to clean up the garbage again?" />
</LinearLayout>
<TextView
android:id="@+id/tv_btn"
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_btn_50"
android:paddingHorizontal="14dp"
android:paddingVertical="6dp"
android:text="@string/clean_now"
android:textColor="@color/white"
android:textSize="12sp"
android:textStyle="bold" />
android:layout_height="wrap_content">
<ProgressBar
android:layout_width="68dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/sl3fku" />
<TextView
android:id="@+id/tv_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/clean_now"
android:textColor="@color/white"
android:textSize="12sp"
android:textStyle="bold" />
</FrameLayout>
</LinearLayout>
......
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