Commit d542ba93 authored by wanglei's avatar wanglei

...

parent d1d44300
......@@ -8,13 +8,10 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<application
android:name=".helper.MyApplication"
android:allowBackup="true"
......@@ -28,7 +25,12 @@
android:theme="@style/Theme.PDFViewerScannerWhite"
android:usesCleartextTraffic="true"
tools:targetApi="34">
<activity
android:name=".ui.appprocess.AppProcessLoadingActivity"
android:exported="false" />
<activity
android:name=".ui.result.ResultActivity"
android:exported="false" />
<meta-data
android:name="com.google.android.gms.version"
......@@ -51,7 +53,6 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ui.main.MainActivity"
android:configChanges="locale"
......@@ -59,7 +60,6 @@
android:launchMode="singleTask"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity">
<intent-filter tools:ignore="AppLinkUrlError">
<action android:name="android.intent.action.VIEW" />
......@@ -71,7 +71,6 @@
<data android:mimeType="application/vnd.ms-excel" />
<data android:mimeType="application/vnd.ms-powerpoint" />
</intent-filter>
</activity>
<activity
android:name=".ui.weather.WeatherInterface"
......
......@@ -18,6 +18,7 @@ import com.base.pdfviewerscannerwhite.ads.admob.AdmobInterstitialUtils
import com.base.pdfviewerscannerwhite.bean.AppBean
import com.base.pdfviewerscannerwhite.databinding.ActivityAppProcessBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.ui.result.ResultActivity
import com.base.pdfviewerscannerwhite.utils.AppPreferences
import com.base.pdfviewerscannerwhite.utils.BarUtils
import com.base.pdfviewerscannerwhite.utils.KotlinExt.toFormatSize
......@@ -29,7 +30,7 @@ import kotlin.random.Random
class AppProcessActivity : BaseActivity<ActivityAppProcessBinding>() {
private val TAG = "com.base.pdfviewerscannerwhite.ui.appprocess.AppProcessActivity"
private val TAG = "AppProcessActivity"
override val binding: ActivityAppProcessBinding by lazy {
ActivityAppProcessBinding.inflate(layoutInflater)
}
......@@ -58,7 +59,21 @@ class AppProcessActivity : BaseActivity<ActivityAppProcessBinding>() {
binding.tvRamRate.text = ramPair.first.toFormatSize() + " / " + ramPair.second.toFormatSize()
AppPreferences.getInstance().put("last_process_use_time", System.currentTimeMillis())
initData()
initDataUI()
}
private fun initDataUI() {
binding.progressBarLoading.visibility = View.GONE
adapter.submitList(appList)
val text = "$backAppCount/$totalCount"
val spannableString = SpannableString(text)
val start = text.indexOf("$backAppCount")
val end = start + "$backAppCount".length
val colorSpan = ForegroundColorSpan(Color.parseColor("#0672EE"))
spannableString.setSpan(colorSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
binding.tvRate.text = spannableString.toString()
}
override fun initListener() {
......@@ -74,7 +89,7 @@ class AppProcessActivity : BaseActivity<ActivityAppProcessBinding>() {
binding.tvBtn.setOnClickListener {
AdmobInterstitialUtils.showInterstitialAd(this) {
finish()
startActivity(Intent(this, ResultActivity::class.java))
}
}
}
......@@ -94,46 +109,39 @@ class AppProcessActivity : BaseActivity<ActivityAppProcessBinding>() {
val packages = pm.getInstalledPackages(0).filter { isLaunchApp(context, it) }
return packages
}
}
private var totalCount = 0
private var backAppCount = 0
private val appList = arrayListOf<AppBean>()
@SuppressLint("QueryPermissionsNeeded")
private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
val pm = packageManager
val packages = pm.getInstalledPackages(0)
val list = arrayListOf<AppBean>()
var totalCount = 0
var backAppCount = 0
packages.forEachIndexed { index, packageInfo ->
if (isLaunchApp(this@AppProcessActivity, packageInfo)) {
totalCount++
if (index % 2 == 0 && Random.nextBoolean()) {
val appBean = AppBean(
packageInfo.applicationInfo.loadIcon(pm),
packageInfo.applicationInfo.loadLabel(pm).toString(),
packageInfo.applicationInfo.packageName
)
list.add(appBean)
backAppCount++
}
@SuppressLint("QueryPermissionsNeeded")
fun initData(
context: Context,
finishAction: (() -> Unit)? = null
) {
val pm = context.packageManager
val packages = pm.getInstalledPackages(0)
appList.clear()
packages.forEachIndexed { index, packageInfo ->
if (isLaunchApp(context, packageInfo)) {
totalCount++
if (index % 2 == 0 && Random.nextBoolean()) {
val appBean = AppBean(
packageInfo.applicationInfo.loadIcon(pm),
packageInfo.applicationInfo.loadLabel(pm).toString(),
packageInfo.applicationInfo.packageName
)
appList.add(appBean)
backAppCount++
}
}
}
}
launch(Dispatchers.Main) {
binding.progressBarLoading.visibility = View.GONE
adapter.submitList(list)
val text = "$backAppCount/$totalCount"
val spannableString = SpannableString(text)
val start = text.indexOf("$backAppCount")
val end = start + "$backAppCount".length
val colorSpan = ForegroundColorSpan(Color.parseColor("#0672EE"))
spannableString.setSpan(colorSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
binding.tvRate.text = spannableString.toString()
}
}
}
\ No newline at end of file
package com.base.pdfviewerscannerwhite.ui.appprocess
import android.animation.ValueAnimator
import android.content.Intent
import android.graphics.Color
import android.view.View
import android.view.animation.LinearInterpolator
import androidx.core.animation.doOnEnd
import androidx.lifecycle.lifecycleScope
import com.base.pdfviewerscannerwhite.ads.admob.AdmobInterstitialUtils
import com.base.pdfviewerscannerwhite.databinding.ActivityAppProcessLoadingBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.utils.BarUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class AppProcessLoadingActivity : BaseActivity<ActivityAppProcessLoadingBinding>() {
override val binding: ActivityAppProcessLoadingBinding by lazy {
ActivityAppProcessLoadingBinding.inflate(layoutInflater)
}
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
// binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
overridePendingTransition(0, 0)
val colors = intArrayOf(
Color.parseColor("#EE5C42"),
Color.parseColor("#F07D34"),
Color.parseColor("#9171E2"),
Color.parseColor("#5C66FB"),
Color.parseColor("#4EA183")
)
startColorAnimation(binding.view, colors, 0, 800)
lifecycleScope.launch(Dispatchers.IO) {
AppProcessActivity.initData(this@AppProcessLoadingActivity)
}
jumpAction = {
startActivity(Intent(this, AppProcessActivity::class.java))
finish()
}
}
override fun initListener() {
super.initListener()
binding.flFanhui.setOnClickListener {
AdmobInterstitialUtils.showInterstitialAd(this) {
jumpAction = null
finishToMain()
}
}
}
var jumpAction: (() -> Unit)? = null
private fun startColorAnimation(view: View, colors: IntArray, index: Int, duration: Long) {
if (index == colors.size - 1) {
jumpAction?.invoke()
jumpAction = null
return // 如果索引超出颜色数组范围,则停止动画
}
val nextIndex = (index + 1)
val animator = ValueAnimator.ofArgb(colors[index], colors[nextIndex])
animator.interpolator = LinearInterpolator()
animator.duration = duration
animator.addUpdateListener { animation ->
view.setBackgroundColor(animation.animatedValue as Int)
}
animator.doOnEnd {
// 当前颜色渐变动画结束后,开始下一个颜色渐变动画
startColorAnimation(view, colors, nextIndex, duration)
}
animator.start()
}
}
\ No newline at end of file
......@@ -18,6 +18,7 @@ import com.base.pdfviewerscannerwhite.databinding.FragmentToolBinding
import com.base.pdfviewerscannerwhite.helper.BaseFragment
import com.base.pdfviewerscannerwhite.helper.WeatherUtils
import com.base.pdfviewerscannerwhite.ui.appprocess.AppProcessActivity
import com.base.pdfviewerscannerwhite.ui.appprocess.AppProcessLoadingActivity
import com.base.pdfviewerscannerwhite.ui.cleanjunk.ScanJunkActivity
import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfActivity
import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfBoxUtils
......@@ -125,7 +126,7 @@ class ToolFragment : BaseFragment<FragmentToolBinding>() {
mainActivity.useGmsScanFunction()
}
binding.llProcess.setOnClickListener {
startActivity(Intent(requireContext(), AppProcessActivity::class.java))
startActivity(Intent(requireContext(), AppProcessLoadingActivity::class.java))
}
binding.tvClean.setOnClickListener {
startActivity(Intent(requireContext(), ScanJunkActivity::class.java))
......
package com.base.pdfviewerscannerwhite.ui.result
import android.graphics.Color
import androidx.core.view.updatePadding
import com.base.pdfviewerscannerwhite.ads.admob.AdmobNativeUtils
import com.base.pdfviewerscannerwhite.databinding.ActivityResultBinding
import com.base.pdfviewerscannerwhite.helper.BaseActivity
import com.base.pdfviewerscannerwhite.utils.BarUtils
class ResultActivity : BaseActivity<ActivityResultBinding>() {
override val binding: ActivityResultBinding by lazy {
ActivityResultBinding.inflate(layoutInflater)
}
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.parseColor("#00B7DD"))
// binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
AdmobNativeUtils.showNativeAd(this, binding.flAd)
}
}
\ 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="#00B8DE" />
<corners android:radius="25dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
android:bottomLeftRadius="10dp"
android:topRightRadius="10dp" />
<solid android:color="#FD8700" />
</shape>
\ No newline at end of file
......@@ -130,7 +130,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:layout_marginStart="18dp"
android:text="Backend Application"
android:text="@string/backend_apps"
tools:ignore="HardcodedText" />
<TextView
......@@ -186,4 +186,5 @@
tools:ignore="HardcodedText" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.appprocess.AppProcessLoadingActivity">
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FABEB4" />
<com.base.pdfviewerscannerwhite.ui.view.XmlLottieAnimationView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:lottie_loop="true"
app:lottie_repeatCount="1"
app:lottie_autoPlay="true"
app:lottie_rawRes="@raw/appprocess_scan" />
<LinearLayout
android:id="@+id/ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<FrameLayout
android:id="@+id/fl_fanhui"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="@mipmap/fanhui_w"
tools:ignore="ContentDescription,MissingPrefix" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="App Process"
android:textColor="@color/white"
android:textSize="19sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00B8DE"
tools:context=".ui.result.ResultActivity">
<FrameLayout
android:id="@+id/fl_fanhui"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="15dp"
android:src="@mipmap/fanhui_w"
tools:ignore="ContentDescription" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="@string/clean_junk"
android:textColor="@color/white"
android:textSize="19sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/fl_fanhui"
app:layout_constraintStart_toEndOf="@id/fl_fanhui"
app:layout_constraintTop_toTopOf="@id/fl_fanhui" />
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:src="@mipmap/wancheng"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/fl_fanhui"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tv_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="13dp"
android:textColor="@color/white"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="@id/iv"
app:layout_constraintStart_toStartOf="@id/iv"
app:layout_constraintTop_toBottomOf="@id/iv"
tools:text="Cleaned!108.7 KB" />
<androidx.cardview.widget.CardView
android:id="@+id/card"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="32dp"
android:layout_marginBottom="40dp"
app:cardCornerRadius="10dp"
app:cardElevation="0dp"
app:cardMaxElevation="0dp"
app:layout_constraintTop_toBottomOf="@id/tv_size">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv_function"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="20dp"
android:src="@mipmap/process"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<LinearLayout
android:id="@+id/ll_function"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="@id/iv_function"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/iv_function"
app:layout_constraintTop_toTopOf="@id/iv_function">
<TextView
android:id="@+id/tv_function"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Process manage"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/tv_function_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="Manage processes run in the background"
android:textColor="#999999"
android:textSize="13sp"
tools:ignore="HardcodedText" />
</LinearLayout>
<TextView
android:id="@+id/tv_function_btn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginHorizontal="30dp"
android:layout_marginVertical="25dp"
android:background="@drawable/bg_00b8de_25"
android:gravity="center"
android:text="Scan Now"
android:textColor="@color/white"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll_function"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="47dp"
android:layout_height="25dp"
android:background="@drawable/bg_fd8700_tr10_bl10"
android:gravity="center"
android:text="REC"
android:textColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="HardcodedText" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="24dp"
android:background="@drawable/bg_ffffff_tlr25"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/card">
<FrameLayout
android:id="@+id/fl_ad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="18dp"
android:layout_marginTop="18dp">
<include layout="@layout/layout_admob_app_exit" />
</FrameLayout>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -42,7 +42,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="15dp"
android:text="Stop"
android:text="@string/stop"
android:textColor="#0571ED"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@id/card"
......
This diff is collapsed.
......@@ -114,5 +114,8 @@
<string name="humidity">Humidity</string>
<string name="wind">Wind</string>
<string name="pressure">Pressure</string>
<string name="backend_apps">Backend Apps</string>
<string name="stop">Stop</string>
<string name="clean_junk">Clean Junk</string>
</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