Skip to content

Commit

Permalink
lots of internal upgrades and colour is now chanageable
Browse files Browse the repository at this point in the history
Signed-off-by: Zade Viggers <[email protected]>
  • Loading branch information
zadeviggers committed Apr 21, 2022
1 parent 143022b commit 1006454
Show file tree
Hide file tree
Showing 6 changed files with 106 additions and 58 deletions.
8 changes: 5 additions & 3 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,13 @@ android {
}

dependencies {

implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.preference:preference-ktx:1.2.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

implementation 'com.github.kizitonwose.colorpreference:support:1.1.0'
}
53 changes: 32 additions & 21 deletions app/src/main/java/net/viggers/zade/wallpaper/PreferencesActivity.kt
Original file line number Diff line number Diff line change
@@ -1,34 +1,45 @@
package net.viggers.zade.wallpaper

import android.preference.PreferenceActivity
import android.os.Bundle
import net.viggers.zade.wallpaper.R
import android.preference.Preference
import android.preference.Preference.OnPreferenceChangeListener
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.preference.EditTextPreference
import androidx.preference.PreferenceFragmentCompat

class PreferencesActivity : PreferenceActivity() {

class PreferencesActivity : AppCompatActivity() {
override fun onCreate(savedInstance: Bundle?) {
super.onCreate(savedInstance)
addPreferencesFromResource(R.xml.prefs)

val maxShapeNumberPreference = preferenceScreen.findPreference("numberOfShapes")
maxShapeNumberPreference.onPreferenceChangeListener = numberCheckListener

val shapeSpawnDelayPreference = preferenceScreen.findPreference("randomShapeSpawnDelay")
shapeSpawnDelayPreference.onPreferenceChangeListener = numberCheckListener
if (savedInstance == null) {
supportFragmentManager.beginTransaction()
.replace(android.R.id.content, PreferencesFragment())
.commit()
}
}

private var numberCheckListener = OnPreferenceChangeListener { _, o ->
if (o != null && o.toString().isNotEmpty() && o.toString().matches(Regex("\\d*"))) {
return@OnPreferenceChangeListener true
class PreferencesFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.prefs, rootKey)

val maxShapeNumberPreference = preferenceScreen.findPreference<EditTextPreference>("numberOfShapes")
maxShapeNumberPreference?.onPreferenceChangeListener = numberCheckListener

val shapeSpawnDelayPreference = preferenceScreen.findPreference<EditTextPreference>("randomShapeSpawnDelay")
shapeSpawnDelayPreference?.onPreferenceChangeListener = numberCheckListener
}

private var numberCheckListener = androidx.preference.Preference.OnPreferenceChangeListener { _, o ->
if (o != null && o.toString().isNotEmpty() && o.toString().matches(Regex("\\d*"))) {
return@OnPreferenceChangeListener true
}
Toast.makeText(
activity,
R.string.invalid_number_input_toast,
Toast.LENGTH_SHORT
)
.show()
false
}
Toast.makeText(
this@PreferencesActivity,
R.string.invalid_number_input_toast,
Toast.LENGTH_SHORT
)
.show()
false
}
}
79 changes: 50 additions & 29 deletions app/src/main/java/net/viggers/zade/wallpaper/WallpaperService.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package net.viggers.zade.wallpaper

import android.content.SharedPreferences
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.os.Handler
import android.preference.PreferenceManager
import android.service.wallpaper.WallpaperService
import android.util.Log
import android.view.MotionEvent
import android.view.SurfaceHolder

Expand All @@ -25,9 +26,54 @@ class WallpaperService : WallpaperService() {
private var visible = true

// Preferences
private val maxCount: Int
private val randomShapesEnabled: Boolean
private val randomShapeSpawnDelay: Int
val prefChangeListener: OnSharedPreferenceChangeListener =
OnSharedPreferenceChangeListener { newPrefs, _ ->
loadPreferences(newPrefs)
Log.d("ZV-Wallpaper", "Preferences changed")
}

val defaultMaxCount: Int = 4
val defaultRandomShapesEnabled: Boolean = true
val defaultRandomShapeDelay: Int = 500
val defaultShapeColour: Int = Color.RED

private var maxCount: Int = defaultMaxCount
private var randomShapesEnabled: Boolean = defaultRandomShapesEnabled
private var randomShapeSpawnDelay: Int = defaultRandomShapeDelay

val nextShapeId: Int
get() = if (shapes.size > 0) {
shapes[shapes.size - 1].num + 1
} else 0

init {
val prefs = androidx.preference.PreferenceManager.getDefaultSharedPreferences(this@WallpaperService)

prefs.registerOnSharedPreferenceChangeListener(prefChangeListener)
loadPreferences(prefs)

Log.d("ZV-Wallpaper", "Loaded wallpaper service")

shapes = ArrayList()
paint.isAntiAlias = true
paint.style = Paint.Style.STROKE
paint.strokeJoin = Paint.Join.ROUND
paint.strokeCap = Paint.Cap.ROUND
paint.strokeWidth = 10f

handler.post(drawRunner)
}

private fun loadPreferences(prefs: SharedPreferences) {
randomShapesEnabled = prefs.getBoolean("enableRandomShapes", defaultRandomShapesEnabled)
maxCount = Integer.valueOf(prefs.getString("numberOfShapes", defaultMaxCount.toString()))
randomShapeSpawnDelay = Integer.valueOf(prefs.getString("randomShapeSpawnDelay", defaultRandomShapeDelay.toString()))
paint.color = prefs.getInt("shapeColour", defaultShapeColour)
}

private fun onSharedPreferenceChanged(prefs: SharedPreferences, key: String) {
loadPreferences(prefs)
}

override fun onVisibilityChanged(isVisible: Boolean) {
visible = isVisible
Expand Down Expand Up @@ -97,30 +143,5 @@ class WallpaperService : WallpaperService() {
canvas.drawCircle(point.x.toFloat(), point.y.toFloat(), 20.0f, paint)
}
}

val nextShapeId: Int
get() = if (shapes.size > 0) {
shapes[shapes.size - 1].num + 1
} else 0

init {
val prefs = PreferenceManager.getDefaultSharedPreferences(this@WallpaperService)

randomShapesEnabled = prefs.getBoolean("enableRandomShapes", true)
maxCount = Integer.valueOf(prefs.getString("numberOfShapes", "4"))
randomShapeSpawnDelay = Integer.valueOf(prefs.getString("randomShapeSpawnDelay", "500"))


shapes = ArrayList()
paint.isAntiAlias = true
paint.color = Color.RED
paint.style = Paint.Style.STROKE
paint.strokeJoin = Paint.Join.ROUND
paint.strokeCap = Paint.Cap.ROUND
paint.strokeWidth = 10f

handler.post(drawRunner)

}
}
}
8 changes: 6 additions & 2 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
<string name="install_wallpaper_button_text">Install wallpaper</string>
<string name="install_wallpaper_instruction_text">Press that button to install the live wallpaper.</string>
<string name="install_wallpaper_settings_info_text">To change the settings, press the cog icon in the top right in the screen that appears after you tap the install button.</string>
<string name="enable_random_shapes_preference_title">Enable spawning random shapes</string>
<string name="random_shape_spawn_delay_preference_title">Random shape spawn delay (ms)</string>
<string name="enable_random_shapes_preference_title">Spawn random shapes</string>
<string name="random_shape_spawn_delay_preference_title">Random spawn delay (ms)</string>
<string name="shape_colour_preference_title">Shape colour</string>
<string name="enable_random_shapes_preference_summary">Enables shapes to be spawned in random places on the screen.</string>
<string name="random_shape_spawn_delay_preference_summary">The delay between spawning new shapes randomly. Less than 500ms might drain your battery.</string>
<string name="number_of_shapes_preference_summary">Once there are this many shapes on the screen, old shapes will be removed.</string>
</resources>
14 changes: 11 additions & 3 deletions app/src/main/res/xml/prefs.xml
Original file line number Diff line number Diff line change
@@ -1,15 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:theme="@style/Theme.Wallpaper">
<EditTextPreference
android:key="numberOfShapes"
android:title="@string/number_of_shapes_preference_title"
android:summary="@string/number_of_shapes_preference_summary"
android:defaultValue="4" />
<SwitchPreference
<com.kizitonwose.colorpreferencecompat.ColorPreferenceCompat
android:key="shapeColour"
android:title="@string/shape_colour_preference_title" />
<SwitchPreferenceCompat
android:key="enableRandomShapes"
android:title="@string/enable_random_shapes_preference_title"
android:summary="@string/enable_random_shapes_preference_summary"
android:defaultValue="true" />
<EditTextPreference
android:key="randomShapeSpawnDelay"
android:title="@string/random_shape_spawn_delay_preference_title"
android:defaultValue="500" />
android:defaultValue="500"
android:summary="@string/random_shape_spawn_delay_preference_summary" />
</PreferenceScreen>
2 changes: 2 additions & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
jcenter()
maven { url "https://jitpack.io" }
}
}
rootProject.name = "Wallpaper"
Expand Down

0 comments on commit 1006454

Please sign in to comment.