Commit 898069de authored by wanglei's avatar wanglei

[拆包]首页ui

parent 4522ce38
This diff is collapsed.
......@@ -10,7 +10,7 @@ class FeatureBean(
val content: Int = 0,
) {
var color: Int = 0
var span: Int = 2
var span: Int = 1
var todayUsed = false
companion object {
......@@ -22,6 +22,7 @@ class FeatureBean(
const val SIMILAR_PHOTOS = "similar_photos"
const val VIDEO_CLEAN = "video_clean"
const val UNINSTALL_APP = "uninstall_app"
const val DEVICE_INFO = "device_info"
const val RECOVERY_PHOTOS = "recovery_photos"
const val RECOVERY_VIDEOS = "recovery_videos"
......
......@@ -14,6 +14,7 @@ import com.base.appzxhy.base.BaseFragment
import com.base.appzxhy.base.jumpAction
import com.base.appzxhy.bean.FeatureBean
import com.base.appzxhy.bean.FeatureBean.Companion.BATTERY_INFO
import com.base.appzxhy.bean.FeatureBean.Companion.DEVICE_INFO
import com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN
import com.base.appzxhy.bean.FeatureBean.Companion.LARGE_FILE_CLEAN
import com.base.appzxhy.bean.FeatureBean.Companion.PHOTO_COMPRESSION
......@@ -21,17 +22,16 @@ import com.base.appzxhy.bean.FeatureBean.Companion.SCREENSHOT_CLEAN
import com.base.appzxhy.bean.FeatureBean.Companion.SETTINGS
import com.base.appzxhy.bean.FeatureBean.Companion.SIMILAR_PHOTOS
import com.base.appzxhy.bean.FeatureBean.Companion.UNINSTALL_APP
import com.base.appzxhy.databinding.FragmentHome2Binding
import com.base.appzxhy.databinding.FragmentHome1Binding
import com.base.appzxhy.ui.dialog.permissionStorageJump
import com.base.appzxhy.ui.set.SettingActivity
import com.base.appzxhy.utils.BarUtils
import com.base.appzxhy.utils.KotlinExt.toFormatSize
import com.base.appzxhy.utils.Utils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async
import kotlinx.coroutines.launch
class HomeFragment : BaseFragment<FragmentHome2Binding>(FragmentHome2Binding::inflate) {
class HomeFragment : BaseFragment<FragmentHome1Binding>(FragmentHome1Binding::inflate) {
private val adapter = FeatureItemAdapter()
......@@ -52,20 +52,6 @@ class HomeFragment : BaseFragment<FragmentHome2Binding>(FragmentHome2Binding::in
).apply {
color = R.color.color_fdfff5
},
FeatureBean(
SIMILAR_PHOTOS,
R.string.similar_photos,
R.drawable.icon_similar_h,
).apply {
color = R.color.color_fefaff
},
FeatureBean(
UNINSTALL_APP,
R.string.uninstall_app,
R.drawable.icon_app_uninstall_h,
).apply {
color = R.color.color_fffafa
},
FeatureBean(
PHOTO_COMPRESSION,
R.string.photo_compression,
......@@ -81,9 +67,24 @@ class HomeFragment : BaseFragment<FragmentHome2Binding>(FragmentHome2Binding::in
color = R.color.color_f7feff
},
FeatureBean(
LARGE_FILE_CLEAN,
R.string.large_file_clean,
R.drawable.icon_large_file_h,
SIMILAR_PHOTOS,
R.string.similar_photos,
R.drawable.icon_similar_h,
).apply {
color = R.color.color_fefaff
},
FeatureBean(
UNINSTALL_APP,
R.string.uninstall_app,
R.drawable.icon_app_uninstall_h,
).apply {
color = R.color.color_fffafa
},
FeatureBean(
DEVICE_INFO,
R.string.device_info,
R.drawable.icon_device_info_h,
).apply {
color = R.color.color_fff7fe
},
......@@ -100,7 +101,12 @@ class HomeFragment : BaseFragment<FragmentHome2Binding>(FragmentHome2Binding::in
insets
}
val layoutManager = GridLayoutManager(requireContext(), 2)
binding.lottie.setAnimation("home_cleaning_lottie.json")
binding.lottie.enableMergePathsForKitKatAndAbove(true)
binding.lottie.setRepeatCount(LottieDrawable.INFINITE)
binding.lottie.playAnimation()
val layoutManager = GridLayoutManager(requireContext(), 3)
layoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {
val span = featureList[position].span
......@@ -111,18 +117,11 @@ class HomeFragment : BaseFragment<FragmentHome2Binding>(FragmentHome2Binding::in
binding.rv.adapter = adapter
adapter.submitList(featureList)
binding.lottie.setMinFrame(0)
binding.lottie.setMaxFrame(55)
binding.lottie.speed = 0.75f
binding.lottie.setRepeatCount(LottieDrawable.INFINITE) // 设置无限循环播放
binding.lottie.setRepeatMode(LottieDrawable.REVERSE) // 设置每次播放结束后重新开始
binding.lottie.playAnimation() // 开始播放动画
}
override fun initListener() {
super.initListener()
binding.flClean.setOnClickListener {
(requireActivity() as MainActivity).permissionStorageJump(JUNK_CLEAN)
}
......@@ -176,9 +175,8 @@ class HomeFragment : BaseFragment<FragmentHome2Binding>(FragmentHome2Binding::in
val percentM = (100 * availMem / totalMem).toInt()
launch(Dispatchers.Main) {
binding.tvUsed.text = usedStorageSize.toFormatSize(1)
binding.tvTotal.text = "/" + totalStorageSize.toFormatSize(1)
binding.circleProgress.setProgressWithAnimation(percent.toFloat(), duration = 1000L, startDelay = 200L)
binding.tvMemoryPercent.text = "$percentM%"
binding.tvStoragePercent.text = "$percent%"
}
}
}
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="@dimen/dp_1"
android:color="@color/white" />
<corners android:radius="@dimen/dp_48" />
</shape>
\ 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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_450"
android:background="#46B7D6"
app:layout_constraintTop_toTopOf="parent" />
<FrameLayout
android:id="@+id/flTop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/dp_24"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_16"
android:gravity="center_vertical"
android:orientation="horizontal"
tools:ignore="UselessParent">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
app:srcCompat="@drawable/icon_home" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:text="@string/app_name"
android:textColor="@color/white"
android:textSize="@dimen/sp_19"
android:textStyle="bold" />
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/flClean"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/flTop">
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/lottie"
android:layout_width="@dimen/dp_200"
android:layout_height="@dimen/dp_200"
app:lottie_autoPlay="true"
app:lottie_cacheComposition="true"
app:lottie_fileName="home_cleaning_lottie.json"
app:lottie_loop="true" />
</FrameLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_16"
android:gravity="start"
android:orientation="vertical"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/flClean">
<TextView
android:id="@+id/tvMemoryPercent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="88%"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:text="@string/memory_used"
android:textColor="@color/white"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"
android:gravity="end"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/flClean">
<TextView
android:id="@+id/tvStoragePercent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="88%"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:text="@string/storage_used"
android:textColor="@color/white"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<TextView
android:id="@+id/tvSize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/scanning"
android:textColor="@color/white"
android:textSize="@dimen/sp_16"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/flClean" />
<TextView
android:id="@+id/tvClean"
android:layout_width="@dimen/dp_108"
android:layout_height="@dimen/dp_38"
android:layout_marginHorizontal="@dimen/dp_80"
android:layout_marginTop="@dimen/dp_18"
android:background="@drawable/bg_stroke_ffffff_48"
android:foreground="?attr/selectableItemBackground"
android:gravity="center"
android:text="@string/clean"
android:textColor="@color/white"
android:textSize="@dimen/sp_14"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvSize" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="@dimen/dp_16"
android:background="@color/white"
android:overScrollMode="never"
android:paddingHorizontal="@dimen/dp_8"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvClean" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -6,8 +6,7 @@
android:layout_marginHorizontal="@dimen/dp_6"
android:layout_marginVertical="@dimen/dp_6"
android:orientation="vertical"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="@dimen/dp_12">
app:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
......@@ -17,10 +16,10 @@
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/ivIcon"
android:layout_width="@dimen/dp_50"
android:layout_height="@dimen/dp_50"
android:layout_width="@dimen/dp_72"
android:layout_height="@dimen/dp_72"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_20" />
android:layout_marginTop="@dimen/dp_6" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_name"
......@@ -29,10 +28,11 @@
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="15dp"
android:gravity="center"
android:gravity="center_horizontal|top"
android:lines="2"
android:text="@string/app_name"
android:textColor="@color/black"
android:textSize="@dimen/sp_12" />
android:textColor="#1A1A1A"
android:textSize="@dimen/sp_14" />
</LinearLayout>
......
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="ExtraTranslation">
<string name="which_type_do_you_want_to_clean">Welchen Typ möchten Sie bereinigen?</string>
<string name="consent">
Während der Nutzung dieser App benötigen wir folgende Informationen: Handymodell, Hersteller, Android-Version, App-Versionsnummer, App-Versionsname, Paketname, Google-Werbe-ID, Zeitzone, Handy-Fotoalbum, leere Ordner, APK-Dateien, temporäre Dateien, Protokolldateien, Akkustand, Standby-Zeit, Akkutemperatur, Akkuspannung, Akkutechnologie, Akkukapazität, Akkustrom, durchschnittlicher Akkustrom.
Wir behandeln Ihre Daten streng nach geltenden Gesetzen. Alle gesammelten Daten werden zweckgebunden verwendet, um App-Funktionen zu gewährleisten und Services zu verbessern. Wir ergreifen alle notwendigen Maßnahmen zum Schutz Ihrer Daten. Ihr Datenschutz hat für uns höchste Priorität.
</string>
<string name="junk_clean">Junk-Bereinigung</string>
<string name="battery_info">Akkustatus</string>
<string name="screenshot_clean">Screenshot-Bereinigung</string>
<string name="large_file_clean">Großdatei-Bereinigung</string>
<string name="photo_compression">Fotokomprimierung</string>
<string name="similar_photos">Doppelte Fotos</string>
<string name="home">Start</string>
<string name="settings">Einstellungen</string>
<string name="battery_status">Akkustatus</string>
<string name="temperature">Temperatur</string>
<string name="voltage">Spannung</string>
<string name="health">Zustand</string>
<string name="good">Gut</string>
<string name="normal">Normal</string>
<string name="battery_type">Akkutyp</string>
<string name="battery_capacity">Akkukapazität</string>
<string name="please_wait">Bitte warten</string>
<string name="power">Ladestand</string>
<string name="charging">Wird geladen</string>
<string name="found">Gefunden</string>
<string name="clean_tips">Bereinigung löscht keine persönlichen Daten</string>
<string name="clean">Bereinigen</string>
<string name="go_it">Verstanden</string>
<string name="empty_folder">Leere Ordner</string>
<string name="apk_files">APK-Dateien</string>
<string name="temp_files">Temporäre Dateien</string>
<string name="logs_files">Protokolldateien</string>
<string name="cleaned_up">Bereinigt</string>
<string name="cleaned_up_content">Andere Daten bereinigt, um Speicherplatz freizugeben</string>
<string name="result_junk_clean">Überflüssige Junk-Dateien bereinigt!</string>
<string name="clean_now">Jetzt bereinigen</string>
<string name="all_types">Alle Typen</string>
<string name="delete">Löschen</string>
<string name="other_than">Andere als</string>
<string name="image">Bild</string>
<string name="apk">APK</string>
<string name="other_types">Andere Typen</string>
<string name="all_time">Gesamter Zeitraum</string>
<string name="week_1">1 Woche</string>
<string name="month_1">1 Monat</string>
<string name="month_3">3 Monate</string>
<string name="month_6">6 Monate</string>
<string name="year_1">1 Jahr</string>
<string name="larger_than">Größer als</string>
<string name="confirm">Bestätigen</string>
<string name="confirm_content">Originalfotos werden durch komprimierte ersetzt</string>
<string name="cancel">Abbrechen</string>
<string name="delete_title">Wirklich löschen?</string>
<string name="delete_content">Gelöschte Dateien können nicht wiederhergestellt werden. Trotzdem fortfahren?</string>
<string name="screenshots_totally">Screenshots insgesamt</string>
<string name="select_all">Alle auswählen</string>
<string name="auto_select">Automatisch auswählen</string>
<string name="occupies">Belegt</string>
<string name="compress">Komprimieren</string>
<string name="wait_a_moment">Einen Moment</string>
<string name="compress_all">Alle komprimieren</string>
<string name="best_quality_photo">Beste Fotoqualität</string>
<string name="most_space_saved">Maximaler Platzgewinn</string>
<string name="clean_junk">Junk bereinigen</string>
<string name="already_saved_for_you">Für Sie bereits gespart</string>
<string name="rate_us">Bewerten Sie uns</string>
<string name="version">Version</string>
<string name="thank_you_for_using_app">Danke für die Nutzung von %s!</string>
<string name="submit">ABSENDEN</string>
<string name="guide_tip_1">
Junk entfernen, Geschwindigkeit steigern. Mit einem Klick Speicher freigeben.
</string>
<string name="guide_tip_2">
Fotos, Videos und Audiodateien bereinigen für mehr Platz und Ordnung.
</string>
<string name="guide_tip_3">
Leistungsstarke Scanfunktion für umfassenden Schutz. Sicherheit für Ihr Gerät.
</string>
<string name="next">Weiter</string>
<string name="sure">Bestätigen</string>
<string name="exit_junk_clean">Junk-Bereinigung beenden?</string>
<string name="exit_junk_clean_content">Nicht bereinigter Junk belegt möglicherweise Speicherplatz.</string>
<string name="exit_battery_info">Akkustatus beenden?</string>
<string name="exit_battery_info_content">Weitere Nutzung hilft beim Akku-Management.</string>
<string name="exit_large_file_clean">Großdatei-Bereinigung beenden?</string>
<string name="exit_large_file_clean_content">Nicht gelöschte Großdateien belegen möglicherweise Speicher.</string>
<string name="exit_photo_compression">Fotokomprimierung beenden?</string>
<string name="exit_photo_compression_content">Nicht komprimierte Fotos belegen möglicherweise Speicher.</string>
<string name="exit_screenshot_cleaner">Screenshot-Bereinigung beenden?</string>
<string name="exit_screenshot_cleaner_content">Nicht gelöschte Screenshots belegen möglicherweise Speicher.</string>
<string name="exit_similar_photos">Doppelte Fotos beenden?</string>
<string name="exit_similar_photos_content">Nicht bereinigte doppelte Fotos belegen möglicherweise Speicher.</string>
<string name="logout_content">Wirklich beenden ohne erneute Bereinigung?</string>
<string name="please_wait_a_moment">Bitte kurz warten</string>
<string name="exit">Beenden</string>
<string name="turn_on">Aktivieren</string>
<string name="CLEAN">BERENIGEN</string>
<string name="uninstall">Deinstallieren</string>
<string name="powered_by_trustlook">Powered by Trustlook</string>
<string name="malware_recommended">Für genauere Ergebnisse Internetverbindung empfohlen</string>
<string name="notification_tips">Aktivieren Sie Benachrichtigungen für wichtige Hinweise.</string>
<string name="don_t_miss_important_tips">Wichtige Hinweise nicht verpassen</string>
<string name="select_a_language">Sprache wählen</string>
<string name="get_started">Loslegen</string>
<string name="loading">Wird geladen...</string>
<string name="battery">Akku</string>
<string name="estimated_battery">Voraussichtliche Akkulaufzeit</string>
<string name="electric_current">Stromstärke</string>
<string name="real_time_current">Echtzeit-Strom</string>
<string name="average_current">Durchschnittsstrom</string>
<string name="notify_junk_clean">Jetzt Junk-Dateien bereinigen!</string>
<string name="notify_battery_info">Akkunutzung anzeigen!</string>
<string name="notify_large_file">Großdateien bereinigen für mehr Speicherplatz!</string>
<string name="notify_similar_photos">Doppelte Fotos bereinigen!</string>
<string name="notify_screenshot">Screenshots bereinigen für mehr Platz!</string>
<string name="notify_photo_compression">Fotos komprimieren für mehr Speicherplatz!</string>
<string name="ads_are_about_to_be_shown_s">Werbung wird in (%1$s Sek.) angezeigt</string>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="ExtraTranslation">
</resources>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -59,4 +59,10 @@
<dimen name="dp_132">132dp</dimen>
<dimen name="dp_200">200dp</dimen>
<dimen name="dp_238">238dp</dimen>
<dimen name="dp_108">108dp</dimen>
<dimen name="dp_48">48dp</dimen>
<dimen name="dp_450">450dp</dimen>
<dimen name="dp_118">118dp</dimen>
<dimen name="dp_250">250dp</dimen>
<dimen name="dp_72">72dp</dimen>
</resources>
\ No newline at end of file
......@@ -168,6 +168,10 @@ Please rest assured that we will handle your information in strict accordance wi
<string name="turn_on_notification">Turn on notification</string>
<string name="redundant_files_found">Redundant Files Found</string>
<string name="found_f">%1$s Found</string>
<string name="memory_used">Memory Used</string>
<string name="storage_used">Storage Used</string>
<string name="scanning">Scanning...</string>
<string name="device_info">Device Info</string>
</resources>
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