Skip to content

Commit 1737bef

Browse files
lingqiqi5211Sevtinge
authored andcommitted
opt: add progress thumb style on os3
1 parent ffc2f21 commit 1737bef

8 files changed

Lines changed: 63 additions & 39 deletions

File tree

library/core/src/main/java/com/sevtinge/hyperceiler/hooker/systemui/MediaCardSettings.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
import androidx.preference.Preference;
2525
import androidx.preference.SwitchPreference;
2626

27-
import com.sevtinge.hyperceiler.dashboard.DashboardFragment;
2827
import com.sevtinge.hyperceiler.core.R;
28+
import com.sevtinge.hyperceiler.dashboard.DashboardFragment;
2929

3030
import fan.preference.ColorPickerPreference;
3131
import fan.preference.DropDownPreference;
@@ -40,6 +40,7 @@ public class MediaCardSettings extends DashboardFragment implements Preference.O
4040
DropDownPreference mAlbumMode;
4141
SwitchPreference mOptAlbum;
4242
DropDownPreference mProgressMode;
43+
DropDownPreference mProgressThumbMode;
4344
SeekBarPreferenceCompat mProgressModeThickness;
4445
SeekBarPreferenceCompat mProgressModeCornerRadius;
4546
ColorPickerPreference mSliderColor;
@@ -61,6 +62,7 @@ public void initPrefs() {
6162
mOptAlbum = findPreference("prefs_key_system_ui_control_center_media_control_album_picture_rounded_corners");
6263

6364
mProgressMode = findPreference("prefs_key_system_ui_control_center_media_control_progress_mode");
65+
mProgressThumbMode = findPreference("prefs_key_system_ui_control_center_media_control_progress_thumb_mode");
6466
mProgressModeThickness = findPreference("prefs_key_system_ui_control_center_media_control_progress_thickness");
6567
mProgressModeCornerRadius = findPreference("prefs_key_system_ui_control_center_media_control_progress_corner_radius");
6668
mSliderColor = findPreference("prefs_key_system_ui_control_center_media_control_seekbar_thumb_color");
@@ -74,7 +76,7 @@ public void initPrefs() {
7476
if (mediaBackgroundModeValue == 5) {
7577
cleanKey("prefs_key_system_ui_control_center_media_control_background_mode");
7678
}
77-
}
79+
} else setPreVisible(mProgressThumbMode, false);
7880
mColorAnim.setVisible(mediaBackgroundModeValue != 0 && mediaBackgroundModeValue != 5);
7981
mInverseColor.setVisible(mediaBackgroundModeValue == 4);
8082
mBlurRadius.setVisible(mediaBackgroundModeValue == 2);

library/core/src/main/res/values-zh-rCN/strings_app.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -862,6 +862,9 @@
862862
<string name="system_ui_control_center_media_control_progress">媒体进度条样式</string>
863863
<string name="system_ui_control_center_media_control_progress_wavy">波浪</string>
864864
<string name="system_ui_control_center_media_control_progress_sleek">圆滑</string>
865+
<string name="system_ui_control_center_media_control_progress_thumb">媒体进度条按钮样式</string>
866+
<string name="system_ui_control_center_media_control_progress_thumb_ori">竖线</string>
867+
<string name="system_ui_control_center_media_control_progress_thumb_non">隐藏</string>
865868
<string name="system_ui_control_center_media_control_progress_thickness">粗细</string>
866869
<string name="system_ui_control_center_media_control_progress_corner_radius">进度条圆角半径</string>
867870
<string name="system_ui_control_center_media_control_unlock_custom_actions">解除自定义动作应用限制</string>

library/core/src/main/res/values/arrays_app.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,18 @@
528528
<item>2</item>
529529
</string-array>
530530

531+
<string-array name="system_ui_control_center_media_control_progress_thumb_mode">
532+
<item>@string/array_default</item>
533+
<item>@string/system_ui_control_center_media_control_progress_thumb_ori</item>
534+
<item>@string/system_ui_control_center_media_control_progress_thumb_non</item>
535+
</string-array>
536+
537+
<string-array name="system_ui_control_center_media_control_progress_thumb_mode_value">
538+
<item>0</item>
539+
<item>1</item>
540+
<item>2</item>
541+
</string-array>
542+
531543
<string-array name="system_ui_control_center_media_control_background_mode_new">
532544
<item>@string/array_default</item>
533545
<item>@string/media_control_ground_mode_1</item>

library/core/src/main/res/values/strings_app.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -822,6 +822,9 @@
822822
<string name="system_ui_control_center_media_control_unlock_custom_actions">Remove custom action restrictions of some music app</string>
823823
<string name="system_ui_control_center_media_control_progress_wavy">Wavy</string>
824824
<string name="system_ui_control_center_media_control_progress_sleek">Sleek</string>
825+
<string name="system_ui_control_center_media_control_progress_thumb">Media progress bar thumb style</string>
826+
<string name="system_ui_control_center_media_control_progress_thumb_ori">Vertical line</string>
827+
<string name="system_ui_control_center_media_control_progress_thumb_non">Hidden</string>
825828
<string name="system_ui_control_center_media_control_progress_thickness">Thickness</string>
826829
<string name="system_ui_control_center_media_control_progress_corner_radius">Progress bar corner radius</string>
827830
<string name="system_ui_control_center_media_control_time_view_text_size">Time view text size</string>

library/core/src/main/res/xml/system_ui_control_center_media_cards.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,13 @@
198198
app:entries="@array/system_ui_control_center_media_control_progress_mode"
199199
app:entryValues="@array/system_ui_control_center_media_control_progress_mode_value" />
200200

201+
<fan.preference.DropDownPreference
202+
android:defaultValue="0"
203+
android:key="prefs_key_system_ui_control_center_media_control_progress_thumb_mode"
204+
android:title="@string/system_ui_control_center_media_control_progress_thumb"
205+
app:entries="@array/system_ui_control_center_media_control_progress_thumb_mode"
206+
app:entryValues="@array/system_ui_control_center_media_control_progress_thumb_mode_value" />
207+
201208
<SeekBarPreferenceCompat
202209
android:key="prefs_key_system_ui_control_center_media_control_progress_corner_radius"
203210
android:title="@string/system_ui_control_center_media_control_progress_corner_radius"

library/hook/src/main/java/com/sevtinge/hyperceiler/hook/module/app/SystemUI/Pad/SystemUIB.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,9 @@ public void handleLoadPackage() {
170170
initHook(MediaPicture.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_media_control_album_picture_rounded_corners") ||
171171
mPrefsMap.getStringAsInt("system_ui_control_center_media_control_media_album_mode", 0) == 1);
172172
initHook(MediaSeekBar.INSTANCE, mPrefsMap.getInt("system_ui_control_center_media_control_seekbar_color", -1) != -1
173-
|| mPrefsMap.getInt("system_ui_control_center_media_control_seekbar_thumb_color", -1) != -1 ||
174-
mPrefsMap.getStringAsInt("system_ui_control_center_media_control_progress_mode", 0) != 0);
173+
|| mPrefsMap.getInt("system_ui_control_center_media_control_seekbar_thumb_color", -1) != -1
174+
|| mPrefsMap.getStringAsInt("system_ui_control_center_media_control_progress_mode", 0) != 0
175+
|| mPrefsMap.getStringAsInt("system_ui_control_center_media_control_progress_thumb_mode", 0) != 0);
175176

176177
// Other
177178
initHook(DoubleTapToSleep.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_double_tap_to_sleep"));

library/hook/src/main/java/com/sevtinge/hyperceiler/hook/module/app/SystemUI/Phone/SystemUIB.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,9 @@ public void handleLoadPackage() {
219219
initHook(MediaPicture.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_media_control_album_picture_rounded_corners") ||
220220
mPrefsMap.getStringAsInt("system_ui_control_center_media_control_media_album_mode", 0) == 1);
221221
initHook(MediaSeekBar.INSTANCE, mPrefsMap.getInt("system_ui_control_center_media_control_seekbar_color", -1) != -1
222-
|| mPrefsMap.getInt("system_ui_control_center_media_control_seekbar_thumb_color", -1) != -1 ||
223-
mPrefsMap.getStringAsInt("system_ui_control_center_media_control_progress_mode", 0) != 0);
222+
|| mPrefsMap.getInt("system_ui_control_center_media_control_seekbar_thumb_color", -1) != -1
223+
|| mPrefsMap.getStringAsInt("system_ui_control_center_media_control_progress_mode", 0) != 0
224+
|| mPrefsMap.getStringAsInt("system_ui_control_center_media_control_progress_thumb_mode", 0) != 0);
224225

225226
// Other
226227
initHook(DoubleTapToSleep.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_double_tap_to_sleep"));

library/hook/src/main/java/com/sevtinge/hyperceiler/hook/module/rules/systemui/controlcenter/media/b/MediaSeekBar.kt

Lines changed: 28 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,6 @@ import io.github.kyuubiran.ezxhelper.xposed.dsl.HookFactory.`-Static`.createAfte
3333
// 和 Android 15- 调用链不一致,故新开
3434
// 2025.08.03
3535
object MediaSeekBar : BaseHook() {
36-
37-
private val progress by lazy {
38-
mPrefsMap.getStringAsInt("system_ui_control_center_media_control_progress_mode", 0) == 2
39-
}
4036
private val progressThickness by lazy {
4137
mPrefsMap.getInt("system_ui_control_center_media_control_progress_thickness", 80)
4238
}
@@ -52,6 +48,9 @@ object MediaSeekBar : BaseHook() {
5248
private val mode by lazy {
5349
mPrefsMap.getStringAsInt("system_ui_control_center_media_control_progress_mode", 0)
5450
}
51+
private val modeThumb by lazy {
52+
mPrefsMap.getStringAsInt("system_ui_control_center_media_control_progress_thumb_mode", 0)
53+
}
5554

5655
override fun init() {
5756
// 1 -> SquigglyProgress, 2 -> GradientDrawable
@@ -69,11 +68,6 @@ object MediaSeekBar : BaseHook() {
6968
phaseSpeed = dp2px(context, 8f).toFloat()
7069
strokeWidth = dp2px(context, 2f).toFloat()
7170
}
72-
73-
val modRes = OtherTool.getModuleRes(context)
74-
seekBar.thumb = modRes.getDrawable(R.drawable.media_seekbar_thumb, context.theme)
75-
// 修复替换按钮后在进度条首尾会有截断问题
76-
seekBar.updatePadding(left = seekBar.thumbOffset, right = seekBar.thumbOffset)
7771
}
7872

7973
2 -> {
@@ -96,7 +90,7 @@ object MediaSeekBar : BaseHook() {
9690
ClipDrawable(onProgressDrawable, Gravity.START, ClipDrawable.HORIZONTAL)
9791
)
9892
).apply {
99-
if (progress) {
93+
if (mode == 2) {
10094
setLayerHeight(0, progressThickness.dp)
10195
setLayerHeight(1, progressThickness.dp)
10296
} else {
@@ -107,8 +101,13 @@ object MediaSeekBar : BaseHook() {
107101

108102
seekBar.progressDrawable = layerDrawable
109103
}
104+
}
110105

111-
else -> return@createAfterHook
106+
if (modeThumb == 1) {
107+
val modRes = OtherTool.getModuleRes(context)
108+
seekBar.thumb = modRes.getDrawable(R.drawable.media_seekbar_thumb, context.theme)
109+
// 修复替换按钮后在进度条首尾会有截断问题
110+
seekBar.updatePadding(left = seekBar.thumbOffset, right = seekBar.thumbOffset)
112111
}
113112

114113
}
@@ -122,32 +121,28 @@ object MediaSeekBar : BaseHook() {
122121

123122
if (progressColor != -1)
124123
seekBar.progressDrawable.colorFilter = PorterDuffColorFilter(progressColor, PorterDuff.Mode.SRC_IN)
125-
if (thumbColor != -1 && mode != 2)
124+
if (thumbColor != -1 && modeThumb != 2)
126125
seekBar.thumb.colorFilter = PorterDuffColorFilter(thumbColor, PorterDuff.Mode.SRC_IN)
127126

128-
when (mode) {
129-
1 -> {
130-
val drawable = seekBar.progressDrawable
131-
if (drawable !is SquigglyProgress) return@createAfterHook
132-
val progress = it.args[0] ?: return@createAfterHook
133-
val seekAvailable = progress.getBooleanField("seekAvailable")
134-
val playing = progress.getBooleanField("playing")
135-
val scrubbing = progress.getBooleanField("scrubbing")
136-
val enabled = progress.getBooleanField("enabled")
137-
138-
if (!enabled) {
139-
drawable.animate = false
140-
} else {
141-
drawable.animate = playing && !scrubbing
142-
drawable.transitionEnabled = !seekAvailable
143-
}
144-
}
145-
146-
2 -> {
147-
seekBar.thumb.colorFilter = colorFilter(Color.TRANSPARENT)
127+
if (mode == 1) {
128+
val drawable = seekBar.progressDrawable
129+
if (drawable !is SquigglyProgress) return@createAfterHook
130+
val progress = it.args[0] ?: return@createAfterHook
131+
val seekAvailable = progress.getBooleanField("seekAvailable")
132+
val playing = progress.getBooleanField("playing")
133+
val scrubbing = progress.getBooleanField("scrubbing")
134+
val enabled = progress.getBooleanField("enabled")
135+
136+
if (!enabled) {
137+
drawable.animate = false
138+
} else {
139+
drawable.animate = playing && !scrubbing
140+
drawable.transitionEnabled = !seekAvailable
148141
}
142+
}
149143

150-
else -> return@createAfterHook
144+
if (modeThumb == 2) {
145+
seekBar.thumb.colorFilter = colorFilter(Color.TRANSPARENT)
151146
}
152147
}
153148
}

0 commit comments

Comments
 (0)