Skip to content

Commit d88bdbf

Browse files
committed
feat: Add Rocket Launcher screen saver
Signed-off-by: Hu Shenghao <dede.hu@qq.com>
1 parent f21743f commit d88bdbf

File tree

23 files changed

+108
-155
lines changed

23 files changed

+108
-155
lines changed

app/src/main/java/com/dede/android_eggs/views/settings/compose/prefs/ComponentManagerPref.kt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.Spacer
55
import androidx.compose.foundation.layout.height
66
import androidx.compose.foundation.layout.size
77
import androidx.compose.material.icons.Icons
8-
import androidx.compose.material.icons.outlined.RocketLaunch
98
import androidx.compose.material.icons.rounded.AppRegistration
109
import androidx.compose.runtime.Composable
1110
import androidx.compose.ui.Modifier
@@ -16,13 +15,14 @@ import androidx.compose.ui.unit.dp
1615
import androidx.lifecycle.ViewModel
1716
import androidx.lifecycle.viewmodel.compose.viewModel
1817
import com.android.launcher2.RocketLauncher
18+
import com.dede.android_eggs.util.LocalEvent
1919
import com.dede.android_eggs.views.main.compose.EasterEggLogo
2020
import com.dede.android_eggs.views.main.util.EasterEggHelp.VersionFormatter
2121
import com.dede.android_eggs.views.settings.compose.basic.ExpandOptionsPref
2222
import com.dede.android_eggs.views.settings.compose.basic.Option
2323
import com.dede.android_eggs.views.settings.compose.basic.OptionShapes
24+
import com.dede.android_eggs.views.settings.compose.basic.SettingPrefUtil
2425
import com.dede.android_eggs.views.settings.compose.basic.SwitchOption
25-
import com.dede.android_eggs.views.settings.compose.basic.imageVectorIconBlock
2626
import com.dede.basic.provider.ComponentProvider
2727
import dagger.hilt.android.lifecycle.HiltViewModel
2828
import javax.inject.Inject
@@ -42,11 +42,18 @@ fun ComponentManagerPref(viewModel: ComponentManagerViewModel = viewModel()) {
4242
val context = LocalContext.current
4343
Option(
4444
shape = OptionShapes.borderShape,
45-
leadingIcon = imageVectorIconBlock(imageVector = Icons.Outlined.RocketLaunch),
45+
leadingIcon = {
46+
EasterEggLogo(
47+
res = com.android.launcher2.R.mipmap.ic_rocket_launcher,
48+
modifier = Modifier.size(30.dp),
49+
contentDescription = stringResource(id = com.android.launcher2.R.string.dream_name),
50+
)
51+
},
4652
title = stringResource(com.android.launcher2.R.string.dream_name),
4753
desc = stringResource(com.android.launcher2.R.string.rocket_launcher_desc),
4854
onClick = {
4955
context.startActivity(Intent(context, RocketLauncher::class.java))
56+
LocalEvent.poster().post(SettingPrefUtil.ACTION_CLOSE_SETTING)
5057
}
5158
)
5259

@@ -60,7 +67,7 @@ fun ComponentManagerPref(viewModel: ComponentManagerViewModel = viewModel()) {
6067
leadingIcon = {
6168
EasterEggLogo(
6269
res = component.iconRes,
63-
modifier = Modifier.size(28.dp),
70+
modifier = Modifier.size(30.dp),
6471
contentDescription = stringResource(id = component.nameRes),
6572
)
6673
},

basic/src/main/java/com/dede/android_eggs/util/LocalEvent.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ object LocalEvent {
5050

5151
fun trimToSize(size: Int) {
5252
var trimCount = 0
53-
val keys = localEventLiveDataMap.keys
53+
val keys = HashSet(localEventLiveDataMap.keys)
5454
for (key in keys) {
5555
val liveData = localEventLiveDataMap[key]
5656
if (liveData == null) {

eggs/AndroidNext/src/main/java/com/android_next/egg/AndroidNextEasterEgg.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ object AndroidNextEasterEgg : EasterEggProvider {
6464
return ImageView(context).apply {
6565
setImageDrawable(context.requireDrawable(PLATLOGO_RES))
6666
setPadding(12.dp)
67-
setBackgroundColor(0xFF_202124.toInt())
67+
setBackgroundColor(0xFF_1B1E22.toInt())
6868
}
6969
}
7070

eggs/RocketLauncher/src/main/AndroidManifest.xml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33

44
<application>
55
<activity
6-
android:name="com.android.launcher2.RocketLauncher"
6+
android:name=".RocketLauncher"
77
android:exported="true"
8-
android:icon="@drawable/ic_rocket_launch"
8+
android:icon="@mipmap/ic_rocket_launcher"
99
android:label="@string/dream_name"
10+
android:roundIcon="@mipmap/ic_rocket_launcher_round"
1011
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
1112
<intent-filter>
1213
<action android:name="android.intent.action.MAIN" />
@@ -15,5 +16,19 @@
1516
<category android:name="android.intent.category.DREAM" />
1617
</intent-filter>
1718
</activity>
19+
20+
<service
21+
android:name=".RocketLauncherDream"
22+
android:exported="true"
23+
android:icon="@mipmap/ic_rocket_launcher"
24+
android:label="@string/dream_name"
25+
android:permission="android.permission.BIND_DREAM_SERVICE"
26+
android:roundIcon="@mipmap/ic_rocket_launcher_round">
27+
<intent-filter>
28+
<action android:name="android.service.dreams.DreamService" />
29+
<category android:name="android.intent.category.DEFAULT" />
30+
</intent-filter>
31+
</service>
32+
1833
</application>
1934
</manifest>

eggs/RocketLauncher/src/main/java/android/support/v13/dreams/Hilt_BasicDream.java

Lines changed: 0 additions & 131 deletions
This file was deleted.

eggs/RocketLauncher/src/main/java/com/android/launcher2/RocketLauncher.java

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import android.graphics.Rect;
3131
import android.graphics.drawable.Drawable;
3232
import android.os.Handler;
33-
import android.support.v13.dreams.Hilt_BasicDream;
33+
import android.support.v13.dreams.BasicDream;
3434
import android.util.AttributeSet;
3535
import android.util.DisplayMetrics;
3636
import android.view.MotionEvent;
@@ -45,15 +45,15 @@
4545
import java.util.List;
4646
import java.util.Random;
4747

48-
import javax.inject.Inject;
48+
import dagger.hilt.EntryPoint;
49+
import dagger.hilt.InstallIn;
50+
import dagger.hilt.android.EntryPointAccessors;
51+
import dagger.hilt.components.SingletonComponent;
52+
import dagger.hilt.internal.GeneratedComponent;
4953

50-
import dagger.hilt.android.AndroidEntryPoint;
51-
52-
@AndroidEntryPoint
53-
public class RocketLauncher extends Hilt_BasicDream {
54+
public class RocketLauncher extends BasicDream {
5455
public static final boolean ROCKET_LAUNCHER = true;
5556

56-
@AndroidEntryPoint
5757
public static class Board extends FrameLayout {
5858
public static final boolean FIXED_STARS = true;
5959
public static final boolean FLYING_STARS = true;
@@ -249,17 +249,25 @@ public void randomize() {
249249
}
250250
}
251251

252-
TimeAnimator mAnim;
252+
@EntryPoint
253+
@InstallIn(SingletonComponent.class)
254+
interface RocketLauncherEntryPoint extends GeneratedComponent {
255+
List<EasterEgg> getEasterEggs();
256+
}
253257

254-
@Inject
255-
List<EasterEgg> mEasterEggs;
258+
TimeAnimator mAnim;
256259

257260
public Board(Context context, AttributeSet as) {
258261
super(context, as);
259262

263+
// Inject in DreamService and Activity
264+
List<EasterEgg> easterEggs = EntryPointAccessors
265+
.fromApplication(getContext(), RocketLauncherEntryPoint.class)
266+
.getEasterEggs();
267+
260268
setBackgroundColor(0xFF000000);
261269

262-
mIcons = Utils.convertComponentNameDrawableIcons(getContext(), mEasterEggs);
270+
mIcons = Utils.convertComponentNameDrawableIcons(getContext(), easterEggs);
263271
// LauncherApplication app = (LauncherApplication)context.getApplicationContext();
264272
// mIcons = app.getIconCache().getAllIcons();
265273
mComponentNames = new ComponentName[mIcons.size()];
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.android.launcher2
2+
3+
import android.service.dreams.DreamService
4+
import android.view.ViewGroup
5+
import kotlin.math.max
6+
7+
class RocketLauncherDream : DreamService() {
8+
9+
override fun onAttachedToWindow() {
10+
super.onAttachedToWindow()
11+
12+
setInteractive(false)
13+
isFullscreen = true
14+
15+
val metrics = resources.displayMetrics
16+
val longSide = max(metrics.widthPixels, metrics.heightPixels)
17+
18+
val b = RocketLauncher.Board(this, null)
19+
setContentView(b, ViewGroup.LayoutParams(longSide, longSide))
20+
b.x = ((metrics.widthPixels - longSide) / 2).toFloat()
21+
b.y = ((metrics.heightPixels - longSide) / 2).toFloat()
22+
}
23+
24+
}

eggs/RocketLauncher/src/main/res/drawable/ic_rocket_launch.xml

Lines changed: 0 additions & 5 deletions
This file was deleted.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="108dp"
3+
android:height="108dp"
4+
android:viewportWidth="24"
5+
android:viewportHeight="24">
6+
<group android:scaleX="0.42"
7+
android:scaleY="0.42"
8+
android:translateX="6.96"
9+
android:translateY="6.96">
10+
11+
<path
12+
android:fillColor="#E5F3E6"
13+
android:pathData="M9.19,6.35c-2.04,2.29 -3.44,5.58 -3.57,5.89L2,10.69l4.05,-4.05c0.47,-0.47 1.15,-0.68 1.81,-0.55L9.19,6.35L9.19,6.35zM11.17,17c0,0 3.74,-1.55 5.89,-3.7c5.4,-5.4 4.5,-9.62 4.21,-10.57c-0.95,-0.3 -5.17,-1.19 -10.57,4.21C8.55,9.09 7,12.83 7,12.83L11.17,17zM17.65,14.81c-2.29,2.04 -5.58,3.44 -5.89,3.57L13.31,22l4.05,-4.05c0.47,-0.47 0.68,-1.15 0.55,-1.81L17.65,14.81L17.65,14.81zM9,18c0,0.83 -0.34,1.58 -0.88,2.12C6.94,21.3 2,22 2,22s0.7,-4.94 1.88,-6.12C4.42,15.34 5.17,15 6,15C7.66,15 9,16.34 9,18zM13,9c0,-1.1 0.9,-2 2,-2s2,0.9 2,2s-0.9,2 -2,2S13,10.1 13,9z" />
14+
15+
</group>
16+
</vector>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
3+
<background android:drawable="@color/ic_rocket_launcher_background" />
4+
<foreground android:drawable="@drawable/ic_rocket_launcher_foreground" />
5+
<monochrome android:drawable="@drawable/ic_rocket_launcher_foreground" />
6+
</adaptive-icon>

0 commit comments

Comments
 (0)