持久化通知
|
|
@ -39,7 +39,17 @@
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
|
|
||||||
<activity android:name="com.gamedog.vididin.main.MainActivity" android:screenOrientation="portrait" android:exported="true" android:launchMode="singleTask" />
|
<activity
|
||||||
|
android:name="com.gamedog.vididin.main.MainActivity"
|
||||||
|
android:screenOrientation="portrait" android:exported="true"
|
||||||
|
android:launchMode="singleTask" >
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="com.remax.notification.ACTION_OPEN_APP" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
|
||||||
|
|
||||||
<activity android:name="com.gamedog.vididin.login.LoginActivity" android:exported="false" />
|
<activity android:name="com.gamedog.vididin.login.LoginActivity" android:exported="false" />
|
||||||
<activity android:name="com.gamedog.vididin.features.benefit.BenefitActivity" android:exported="false" />
|
<activity android:name="com.gamedog.vididin.features.benefit.BenefitActivity" android:exported="false" />
|
||||||
<activity android:name="com.gamedog.vididin.features.zero.ZeroBuyActivity" android:exported="false" />
|
<activity android:name="com.gamedog.vididin.features.zero.ZeroBuyActivity" android:exported="false" />
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ object VidiConst {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Varous type for watching Ad
|
* Varous type for watching Ad
|
||||||
*/
|
*/
|
||||||
|
|
@ -64,6 +63,12 @@ object VidiConst {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//------------------------ Statistics ----------------------------
|
||||||
|
const val STATISTICS_APP_OPEN = "app_open"
|
||||||
|
const val STATISTICS_NOTIFI_CLICK = "Notific_Click"
|
||||||
|
const val STATISTICS_NOTIFI_ENTER = "Notific_Enter"
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -328,6 +328,9 @@ class WithDrawActivity : AppViewsEmptyViewModelActivity<ViewBinding>() {
|
||||||
SpUtil.instance().putInt(SpUtil.KEY_GUIDE_HAS_SHOW, 4)
|
SpUtil.instance().putInt(SpUtil.KEY_GUIDE_HAS_SHOW, 4)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onDestroy() {
|
||||||
|
super.onDestroy()
|
||||||
|
}
|
||||||
|
|
||||||
private fun showGuide() {
|
private fun showGuide() {
|
||||||
HighlightPro.with(this@WithDrawActivity)
|
HighlightPro.with(this@WithDrawActivity)
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,12 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import com.ama.core.architecture.appBase.AppViewsActivity
|
import com.ama.core.architecture.appBase.AppViewsActivity
|
||||||
import com.ama.core.architecture.appBase.OnFragmentBackgroundListener
|
import com.ama.core.architecture.appBase.OnFragmentBackgroundListener
|
||||||
import com.ama.core.architecture.ext.toast
|
import com.ama.core.architecture.ext.toast
|
||||||
|
import com.ama.core.architecture.util.AndroidUtil
|
||||||
import com.ama.core.architecture.util.SpUtil
|
import com.ama.core.architecture.util.SpUtil
|
||||||
import com.ama.core.architecture.util.bindViewPager2
|
import com.ama.core.architecture.util.bindViewPager2
|
||||||
import com.ama.core.architecture.util.setCommonNavigator
|
import com.ama.core.architecture.util.setCommonNavigator
|
||||||
import com.ama.core.architecture.util.setDataOrAdapter
|
import com.ama.core.architecture.util.setDataOrAdapter
|
||||||
|
import com.blankj.utilcode.util.ActivityUtils
|
||||||
import com.vididin.real.money.game.R
|
import com.vididin.real.money.game.R
|
||||||
import com.gamedog.vididin.VidiConst
|
import com.gamedog.vididin.VidiConst
|
||||||
import com.gamedog.vididin.VididinEvents
|
import com.gamedog.vididin.VididinEvents
|
||||||
|
|
@ -28,7 +30,16 @@ import com.gamedog.vididin.main.fragments.task.DailySignSuccessDialog
|
||||||
import com.gamedog.vididin.main.interfaces.OnTabStyleListener
|
import com.gamedog.vididin.main.interfaces.OnTabStyleListener
|
||||||
import com.gamedog.vididin.manager.DateChangeReceiver
|
import com.gamedog.vididin.manager.DateChangeReceiver
|
||||||
import com.gamedog.vididin.manager.NotificationController
|
import com.gamedog.vididin.manager.NotificationController
|
||||||
|
import com.gamedog.vididin.router.Router
|
||||||
|
import com.remax.base.report.DataReportManager
|
||||||
import com.remax.base.utils.ActivityLauncher
|
import com.remax.base.utils.ActivityLauncher
|
||||||
|
import com.remax.notification.builder.LANDING_NOTIFICATION_ACTION
|
||||||
|
import com.remax.notification.builder.LANDING_NOTIFICATION_CONTENT
|
||||||
|
import com.remax.notification.builder.LANDING_NOTIFICATION_FROM
|
||||||
|
import com.remax.notification.builder.LANDING_NOTIFICATION_TITLE
|
||||||
|
import com.remax.notification.check.NotificationCheckController
|
||||||
|
import com.remax.notification.config.PushContent
|
||||||
|
import com.remax.notification.controller.NotificationLandingController
|
||||||
import com.remax.notification.service.NotificationKeepAliveServiceManager
|
import com.remax.notification.service.NotificationKeepAliveServiceManager
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import kotlin.getValue
|
import kotlin.getValue
|
||||||
|
|
@ -133,6 +144,9 @@ class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabS
|
||||||
NotificationKeepAliveServiceManager.startKeepAliveService(this@MainActivity)
|
NotificationKeepAliveServiceManager.startKeepAliveService(this@MainActivity)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
handleNotificationAction()
|
||||||
|
reportStatistics(intent, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -155,10 +169,126 @@ class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabS
|
||||||
navigatorAdapter.setIsDarkFont(isDarkFont)
|
navigatorAdapter.setIsDarkFont(isDarkFont)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onNewIntent(intent: Intent) {
|
||||||
|
super.onNewIntent(intent)
|
||||||
|
setIntent(intent)
|
||||||
|
handleNotificationAction()
|
||||||
|
reportStatistics(intent, true)
|
||||||
|
}
|
||||||
|
|
||||||
fun switchTab(itemIndex: Int) {
|
fun switchTab(itemIndex: Int) {
|
||||||
binding.viewPager2.setCurrentItem(itemIndex, false)
|
binding.viewPager2.setCurrentItem(itemIndex, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun handleNotificationAction() {
|
||||||
|
if (NotificationLandingController.isFromNotification(intent)) {
|
||||||
|
when (intent.getIntExtra(LANDING_NOTIFICATION_ACTION, -1)) {
|
||||||
|
PushContent.ACTION_TYPE_SCREENSHOT_CLEAN -> {
|
||||||
|
//TYPE_PHOTO_SHOT.jumpTo(this@HomeActivity)
|
||||||
|
}
|
||||||
|
|
||||||
|
PushContent.ACTION_TYPE_RECOVERED_FILES -> {
|
||||||
|
/*checkPermissionAndExecute(activityLauncher!!) {
|
||||||
|
val intent = Intent(this, TabLayoutActivity::class.java)
|
||||||
|
startActivity(intent)
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
PushContent.ACTION_TYPE_GAME -> {
|
||||||
|
AndroidUtil.openUrl(VidiConst.URL_GAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
PushContent.ACTION_TYPE_GOLD -> {
|
||||||
|
switchTab(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
PushContent.ACTION_TYPE_WITHDRAW -> {
|
||||||
|
Router.Withdraw.startActivity(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
PushContent.ACTION_TYPE_BOX -> {
|
||||||
|
Router.Benefit.startActivity(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
NotificationLandingController.clearNotificationParameters(intent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private fun reportStatistics(intent: Intent, isFromNewIntent: Boolean) {
|
||||||
|
// AppOpen
|
||||||
|
DataReportManager.reportData(
|
||||||
|
VidiConst.STATISTICS_APP_OPEN,
|
||||||
|
mapOf(
|
||||||
|
"type" to if (ActivityUtils.isActivityExistsInStack(MainActivity::class.java)) "hot_open" else "cold_open",
|
||||||
|
"position" to if (intent.hasExtra(LANDING_NOTIFICATION_FROM)) intent.getStringExtra(
|
||||||
|
LANDING_NOTIFICATION_FROM).orEmpty().ifBlank { "other" } else "other"
|
||||||
|
))
|
||||||
|
|
||||||
|
// Notific_Click
|
||||||
|
if (intent.hasExtra(LANDING_NOTIFICATION_FROM)) {
|
||||||
|
val notifyFrom = intent.getStringExtra(LANDING_NOTIFICATION_FROM).orEmpty()
|
||||||
|
|
||||||
|
DataReportManager.reportData(
|
||||||
|
VidiConst.STATISTICS_NOTIFI_CLICK, mapOf(
|
||||||
|
"Notific_Type" to when (notifyFrom) {
|
||||||
|
NotificationCheckController.NotificationType.UNLOCK.string -> 1
|
||||||
|
NotificationCheckController.NotificationType.BACKGROUND.string -> 1
|
||||||
|
NotificationCheckController.NotificationType.KEEPALIVE.string -> 1
|
||||||
|
NotificationCheckController.NotificationType.FCM.string -> 3
|
||||||
|
NotificationCheckController.NotificationType.RESIDENT.string -> 4
|
||||||
|
else -> 4
|
||||||
|
},
|
||||||
|
"Notific_Position" to when (intent.getStringExtra(LANDING_NOTIFICATION_FROM).orEmpty()) {
|
||||||
|
NotificationCheckController.NotificationType.RESIDENT.string -> 2
|
||||||
|
else -> 1
|
||||||
|
},
|
||||||
|
"Notific_Priority" to when (intent.getStringExtra(LANDING_NOTIFICATION_FROM).orEmpty()) {
|
||||||
|
NotificationCheckController.NotificationType.RESIDENT.string -> "PRIORITY_DEFAULT"
|
||||||
|
else -> "PRIORITY_MAX"
|
||||||
|
},
|
||||||
|
"event_id" to when (intent.getStringExtra(LANDING_NOTIFICATION_FROM).orEmpty()) {
|
||||||
|
NotificationCheckController.NotificationType.RESIDENT.string -> "permanent"
|
||||||
|
else -> "customer_general_style"
|
||||||
|
},
|
||||||
|
"title" to intent.getStringExtra(LANDING_NOTIFICATION_TITLE).orEmpty(),
|
||||||
|
"text" to intent.getStringExtra(LANDING_NOTIFICATION_CONTENT).orEmpty(),
|
||||||
|
"from_background" to /*!ActivityUtils.isActivityExistsInStack(HomeActivity::class.java)*/isFromNewIntent
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
DataReportManager.reportData(
|
||||||
|
VidiConst.STATISTICS_NOTIFI_ENTER, mapOf(
|
||||||
|
"Notific_Type" to when (intent.getStringExtra(LANDING_NOTIFICATION_FROM).orEmpty()) {
|
||||||
|
NotificationCheckController.NotificationType.UNLOCK.string -> 1
|
||||||
|
NotificationCheckController.NotificationType.BACKGROUND.string -> 1
|
||||||
|
NotificationCheckController.NotificationType.KEEPALIVE.string -> 1
|
||||||
|
NotificationCheckController.NotificationType.FCM.string -> 3
|
||||||
|
NotificationCheckController.NotificationType.RESIDENT.string -> 4
|
||||||
|
else -> 4
|
||||||
|
},
|
||||||
|
"Notific_Position" to when (intent.getStringExtra(LANDING_NOTIFICATION_FROM).orEmpty()) {
|
||||||
|
NotificationCheckController.NotificationType.RESIDENT.string -> 2
|
||||||
|
else -> 1
|
||||||
|
},
|
||||||
|
"Notific_Priority" to when (intent.getStringExtra(LANDING_NOTIFICATION_FROM).orEmpty()) {
|
||||||
|
NotificationCheckController.NotificationType.RESIDENT.string -> "PRIORITY_DEFAULT"
|
||||||
|
else -> "PRIORITY_MAX"
|
||||||
|
},
|
||||||
|
"event_id" to when (intent.getStringExtra(LANDING_NOTIFICATION_FROM).orEmpty()) {
|
||||||
|
NotificationCheckController.NotificationType.RESIDENT.string -> "permanent"
|
||||||
|
else -> "customer_general_style"
|
||||||
|
},
|
||||||
|
"title" to intent.getStringExtra(LANDING_NOTIFICATION_TITLE).orEmpty(),
|
||||||
|
"text" to intent.getStringExtra(LANDING_NOTIFICATION_CONTENT).orEmpty(),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
internal fun startActivity(activity: Activity) {
|
internal fun startActivity(activity: Activity) {
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,9 @@ import kotlin.random.Random
|
||||||
enum class NotificationType {
|
enum class NotificationType {
|
||||||
GENERAL,
|
GENERAL,
|
||||||
RESIDENT, RESIDENT_RESTORED, RESIDENT_RESTORED_FILE,
|
RESIDENT, RESIDENT_RESTORED, RESIDENT_RESTORED_FILE,
|
||||||
WIDGET_SCREENSHOT_CLEAN,WIDGET_PHOTO_RECOVERY,WIDGET_PHOTO_DOCUMENT
|
WIDGET_SCREENSHOT_CLEAN,WIDGET_PHOTO_RECOVERY,WIDGET_PHOTO_DOCUMENT,
|
||||||
|
// new
|
||||||
|
RESIDENT_GOLD, RESIDENT_WITHDRAW, RESIDENT_BOX, RESIDENT_GAME,
|
||||||
}
|
}
|
||||||
|
|
||||||
val type2notificationId = mapOf(
|
val type2notificationId = mapOf(
|
||||||
|
|
@ -35,6 +37,13 @@ val type2notificationId = mapOf(
|
||||||
NotificationType.WIDGET_SCREENSHOT_CLEAN to 10004,
|
NotificationType.WIDGET_SCREENSHOT_CLEAN to 10004,
|
||||||
NotificationType.WIDGET_PHOTO_RECOVERY to 10005,
|
NotificationType.WIDGET_PHOTO_RECOVERY to 10005,
|
||||||
NotificationType.WIDGET_PHOTO_DOCUMENT to 10006,
|
NotificationType.WIDGET_PHOTO_DOCUMENT to 10006,
|
||||||
|
|
||||||
|
|
||||||
|
// new
|
||||||
|
NotificationType.RESIDENT_GOLD to 20001,
|
||||||
|
NotificationType.RESIDENT_WITHDRAW to 20002,
|
||||||
|
NotificationType.RESIDENT_BOX to 20003,
|
||||||
|
NotificationType.RESIDENT_GAME to 20004,
|
||||||
)
|
)
|
||||||
|
|
||||||
val LANDING_NOTIFICATION_ID = "landing_notification_id"
|
val LANDING_NOTIFICATION_ID = "landing_notification_id"
|
||||||
|
|
@ -281,47 +290,33 @@ class ResidentModelManger {
|
||||||
context.packageName,
|
context.packageName,
|
||||||
R.layout.layout_notification_resident_12,
|
R.layout.layout_notification_resident_12,
|
||||||
R.layout.layout_notification_resident
|
R.layout.layout_notification_resident
|
||||||
)
|
).setOnClickPendingIntent(
|
||||||
.setViewVisible(R.id.ivPoint, shouldShowRedPoint(context))
|
R.id.resident_gold, entryPointPendingIntent(context,
|
||||||
.setTextViewText(
|
type2notificationId[NotificationType.RESIDENT_GOLD] ?: 0
|
||||||
R.id.files,
|
) {
|
||||||
StringUtils.getString(
|
it.putExtra(LANDING_NOTIFICATION_ACTION, PushContent.ACTION_TYPE_GOLD)
|
||||||
R.string.noti_restore_file_count,
|
it.putExtra(LANDING_NOTIFICATION_FROM, NotificationCheckController.NotificationType.RESIDENT.string)
|
||||||
getRecoveredFileCount(context).toString()
|
})
|
||||||
)
|
|
||||||
)
|
|
||||||
.setTextViewText(
|
|
||||||
R.id.restored,
|
|
||||||
StringUtils.getString(
|
|
||||||
R.string.noti_restored
|
|
||||||
)
|
|
||||||
)
|
|
||||||
.setTextViewText(
|
|
||||||
R.id.restore_file,
|
|
||||||
StringUtils.getString(
|
|
||||||
R.string.noti_restore_file
|
|
||||||
)
|
|
||||||
)
|
|
||||||
.setOnClickPendingIntent(
|
.setOnClickPendingIntent(
|
||||||
R.id.llRestored, entryPointPendingIntent(
|
R.id.resident_withdraw, entryPointPendingIntent(context,
|
||||||
context,
|
type2notificationId[NotificationType.RESIDENT_WITHDRAW] ?: 0
|
||||||
type2notificationId[NotificationType.RESIDENT_RESTORED] ?: 0
|
|
||||||
) {
|
) {
|
||||||
it.putExtra(
|
it.putExtra(LANDING_NOTIFICATION_ACTION, PushContent.ACTION_TYPE_WITHDRAW)
|
||||||
LANDING_NOTIFICATION_ACTION,
|
|
||||||
PushContent.ACTION_TYPE_RECOVERED_FILES
|
|
||||||
)
|
|
||||||
it.putExtra(LANDING_NOTIFICATION_FROM, NotificationCheckController.NotificationType.RESIDENT.string)
|
it.putExtra(LANDING_NOTIFICATION_FROM, NotificationCheckController.NotificationType.RESIDENT.string)
|
||||||
})
|
})
|
||||||
.setOnClickPendingIntent(
|
.setOnClickPendingIntent(
|
||||||
R.id.llRestoreFiles, entryPointPendingIntent(
|
R.id.resident_box, entryPointPendingIntent(context,
|
||||||
context,
|
type2notificationId[NotificationType.RESIDENT_BOX] ?: 0
|
||||||
type2notificationId[NotificationType.RESIDENT_RESTORED_FILE] ?: 0
|
|
||||||
) {
|
) {
|
||||||
it.putExtra(
|
it.putExtra(LANDING_NOTIFICATION_ACTION, PushContent.ACTION_TYPE_BOX)
|
||||||
LANDING_NOTIFICATION_ACTION,
|
it.putExtra(LANDING_NOTIFICATION_FROM, NotificationCheckController.NotificationType.RESIDENT.string)
|
||||||
PushContent.ACTION_TYPE_DOCUMENT_RECOVERY
|
})
|
||||||
)
|
|
||||||
|
.setOnClickPendingIntent(
|
||||||
|
R.id.resident_game, entryPointPendingIntent(context,
|
||||||
|
type2notificationId[NotificationType.RESIDENT_GAME] ?: 0
|
||||||
|
) {
|
||||||
|
it.putExtra(LANDING_NOTIFICATION_ACTION, PushContent.ACTION_TYPE_GAME)
|
||||||
it.putExtra(LANDING_NOTIFICATION_FROM, NotificationCheckController.NotificationType.RESIDENT.string)
|
it.putExtra(LANDING_NOTIFICATION_FROM, NotificationCheckController.NotificationType.RESIDENT.string)
|
||||||
})
|
})
|
||||||
.build()
|
.build()
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,13 @@ data class PushContent(
|
||||||
const val ACTION_TYPE_SCREENSHOT_CLEAN = 5 // 跳转截图清理 界面
|
const val ACTION_TYPE_SCREENSHOT_CLEAN = 5 // 跳转截图清理 界面
|
||||||
const val ACTION_TYPE_RECOVERED_FILES = 6 // 跳转已恢复文件列表 界面
|
const val ACTION_TYPE_RECOVERED_FILES = 6 // 跳转已恢复文件列表 界面
|
||||||
|
|
||||||
|
// new ---
|
||||||
|
const val ACTION_TYPE_GOLD = 101
|
||||||
|
const val ACTION_TYPE_WITHDRAW = 102
|
||||||
|
const val ACTION_TYPE_BOX = 103
|
||||||
|
const val ACTION_TYPE_GAME = 104
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据动作类型获取对应的图标类型
|
* 根据动作类型获取对应的图标类型
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ import com.remax.notification.controller.NotificationTriggerController
|
||||||
import com.remax.notification.timing.NotificationTimingController
|
import com.remax.notification.timing.NotificationTimingController
|
||||||
import com.remax.notification.check.NotificationCheckController
|
import com.remax.notification.check.NotificationCheckController
|
||||||
import com.remax.notification.service.NotificationKeepAliveService
|
import com.remax.notification.service.NotificationKeepAliveService
|
||||||
import com.remax.notification.service.NotificationKeepAliveServiceManager
|
|
||||||
import com.remax.notification.utils.ResetAtMidnightController
|
import com.remax.notification.utils.ResetAtMidnightController
|
||||||
import com.remax.notification.utils.NotiLogger
|
import com.remax.notification.utils.NotiLogger
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,28 +40,12 @@ class NotificationRemoteViewsBuilder(
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setImageViewBitmap(viewId: Int, bitmap: Bitmap): NotificationRemoteViewsBuilder {
|
|
||||||
remoteViews.setImageViewBitmap(viewId, bitmap)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setImageViewUri(viewId: Int, uri: Uri): NotificationRemoteViewsBuilder {
|
|
||||||
remoteViews.setImageViewUri(viewId, uri)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setOnClickPendingIntent(viewId: Int, pendingIntent: PendingIntent): NotificationRemoteViewsBuilder {
|
fun setOnClickPendingIntent(viewId: Int, pendingIntent: PendingIntent): NotificationRemoteViewsBuilder {
|
||||||
remoteViews.setOnClickPendingIntent(viewId, pendingIntent)
|
remoteViews.setOnClickPendingIntent(viewId, pendingIntent)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setProgressBar(
|
|
||||||
viewId: Int, max: Int, progress: Int, indeterminate: Boolean
|
|
||||||
): NotificationRemoteViewsBuilder {
|
|
||||||
remoteViews.setProgressBar(viewId, max, progress, indeterminate)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
fun build(): RemoteViews {
|
fun build(): RemoteViews {
|
||||||
return remoteViews
|
return remoteViews
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
|
@ -1,109 +1,59 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<LinearLayout 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"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="64dp"
|
android:layout_height="50dp"
|
||||||
android:background="@drawable/noti_bg_r16_white"
|
android:background="@drawable/noti_bg_r16_white"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:paddingHorizontal="12dp">
|
tools:ignore="ResourceName">
|
||||||
|
|
||||||
|
|
||||||
<FrameLayout
|
<ImageView
|
||||||
android:id="@+id/llRestored"
|
android:id="@+id/resident_gold"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:background="@drawable/noti_bg_r8_green"
|
android:scaleType="fitCenter"
|
||||||
android:paddingHorizontal="12dp"
|
android:src="@drawable/vidi_task_gold"
|
||||||
android:paddingVertical="7dp">
|
/>
|
||||||
|
|
||||||
<LinearLayout
|
<ImageView
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/resident_withdraw"
|
||||||
android:layout_height="wrap_content">
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
<ImageView
|
|
||||||
android:layout_width="34dp"
|
|
||||||
android:layout_height="34dp"
|
|
||||||
android:src="@drawable/ic_resident_restored" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:gravity="center_vertical|end"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/restored"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/noti_restored"
|
|
||||||
android:textColor="#fff"
|
|
||||||
android:textSize="12sp" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/files"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:lines="1"
|
|
||||||
android:text="@string/noti_restore_file_count"
|
|
||||||
android:textColor="#fff"
|
|
||||||
android:textSize="12sp" />
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="13dp"
|
|
||||||
android:layout_height="wrap_content" />
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:id="@+id/llRestoreFiles"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:background="@drawable/noti_bg_r8_blue">
|
android:scaleType="fitCenter"
|
||||||
|
android:src="@drawable/vidi_task_cash"
|
||||||
|
/>
|
||||||
|
|
||||||
<LinearLayout
|
<ImageView
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/resident_box"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="0dp"
|
||||||
android:paddingHorizontal="12dp"
|
android:layout_height="match_parent"
|
||||||
android:paddingVertical="7dp">
|
android:layout_weight="1"
|
||||||
|
android:scaleType="fitCenter"
|
||||||
|
android:src="@drawable/vidi_benefit_item_ongoing"
|
||||||
|
/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:layout_width="34dp"
|
android:id="@+id/resident_game"
|
||||||
android:layout_height="34dp"
|
android:layout_width="0dp"
|
||||||
android:src="@drawable/ic_resident_restore" />
|
android:layout_height="match_parent"
|
||||||
|
android:layout_weight="1"
|
||||||
<LinearLayout
|
android:scaleType="fitCenter"
|
||||||
android:layout_width="0dp"
|
android:src="@drawable/vidi_task_act_game"
|
||||||
android:layout_height="wrap_content"
|
/>
|
||||||
android:layout_weight="1"
|
|
||||||
android:gravity="center_vertical|end">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/restore_file"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="end"
|
|
||||||
android:text="@string/noti_restore_file"
|
|
||||||
android:textColor="#fff"
|
|
||||||
android:textSize="12sp" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/ivPoint"
|
|
||||||
android:layout_width="8dp"
|
|
||||||
android:layout_height="8dp"
|
|
||||||
android:layout_gravity="end"
|
|
||||||
android:src="@drawable/ic_resident_tip" />
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/resident_close"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="30dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_gravity="top"
|
||||||
|
android:scaleType="fitCenter"
|
||||||
|
android:src="@drawable/vidi_icon_close"
|
||||||
|
/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,106 +3,63 @@
|
||||||
<LinearLayout 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"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="50dp"
|
||||||
android:background="@drawable/noti_bg_r16_white"
|
android:background="@drawable/noti_bg_r16_white"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal"
|
||||||
|
tools:ignore="ResourceName">
|
||||||
|
|
||||||
|
|
||||||
<FrameLayout
|
<ImageView
|
||||||
android:id="@+id/llRestored"
|
android:id="@+id/resident_gold"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
|
android:clickable="true"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:background="@drawable/noti_bg_r8_green"
|
android:scaleType="fitCenter"
|
||||||
android:paddingHorizontal="12dp"
|
android:src="@drawable/vidi_task_gold"
|
||||||
android:paddingVertical="7dp">
|
/>
|
||||||
|
|
||||||
<LinearLayout
|
<ImageView
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/resident_withdraw"
|
||||||
android:layout_height="wrap_content">
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
<ImageView
|
android:clickable="true"
|
||||||
android:layout_width="34dp"
|
|
||||||
android:layout_height="34dp"
|
|
||||||
android:src="@drawable/ic_resident_restored" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:gravity="center_vertical|end"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/restored"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/noti_restored"
|
|
||||||
android:textColor="#fff"
|
|
||||||
android:textSize="12sp" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/files"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:lines="1"
|
|
||||||
android:text="@string/noti_restore_file_count"
|
|
||||||
android:textColor="#fff"
|
|
||||||
android:textSize="12sp" />
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="13dp"
|
|
||||||
android:layout_height="wrap_content" />
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:id="@+id/llRestoreFiles"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:background="@drawable/noti_bg_r8_blue">
|
android:scaleType="fitCenter"
|
||||||
|
android:src="@drawable/vidi_task_cash"
|
||||||
|
/>
|
||||||
|
|
||||||
<LinearLayout
|
<ImageView
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/resident_box"
|
||||||
android:layout_height="wrap_content"
|
android:layout_width="0dp"
|
||||||
android:paddingHorizontal="12dp"
|
android:layout_height="match_parent"
|
||||||
android:paddingVertical="7dp">
|
android:clickable="true"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:scaleType="fitCenter"
|
||||||
|
android:src="@drawable/vidi_benefit_item_ongoing"
|
||||||
|
/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:layout_width="34dp"
|
android:id="@+id/resident_game"
|
||||||
android:layout_height="34dp"
|
android:layout_width="0dp"
|
||||||
android:src="@drawable/ic_resident_restore" />
|
android:layout_height="match_parent"
|
||||||
|
android:clickable="true"
|
||||||
<LinearLayout
|
android:layout_weight="1"
|
||||||
android:layout_width="0dp"
|
android:scaleType="fitCenter"
|
||||||
android:layout_height="wrap_content"
|
android:src="@drawable/vidi_task_act_game"
|
||||||
android:layout_weight="1"
|
/>
|
||||||
android:gravity="center_vertical|end">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/restore_file"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="end"
|
|
||||||
android:text="@string/noti_restore_file"
|
|
||||||
android:textColor="#fff"
|
|
||||||
android:textSize="12sp" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/ivPoint"
|
|
||||||
android:layout_width="8dp"
|
|
||||||
android:layout_height="8dp"
|
|
||||||
android:layout_gravity="end"
|
|
||||||
android:src="@drawable/ic_resident_tip" />
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/resident_close"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:clickable="true"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_gravity="top"
|
||||||
|
android:scaleType="fitCenter"
|
||||||
|
android:src="@drawable/vidi_icon_close"
|
||||||
|
/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 6.8 KiB |