summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Doan <andy.doan@linaro.org>2011-12-05 23:07:06 -0600
committerAndy Doan <andy.doan@linaro.org>2011-12-06 15:14:26 -0600
commit1e893644610b991dda3c99911dc45a4be4a75dfc (patch)
tree3a9ad28dc2532d7c38245ac706af459b21147680
parenta3960ae511814d20bdb3572338d2af10ca1f685f (diff)
downloadLinaroWallpaper-1e893644610b991dda3c99911dc45a4be4a75dfc.tar.gz
initial support for change listener
this puts the framework in place to handle preference changes for the location of the logo
-rw-r--r--src/org/linaro/wallpaper/LogoWallpaper.java26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/org/linaro/wallpaper/LogoWallpaper.java b/src/org/linaro/wallpaper/LogoWallpaper.java
index 2e57ea0..ec58ae8 100644
--- a/src/org/linaro/wallpaper/LogoWallpaper.java
+++ b/src/org/linaro/wallpaper/LogoWallpaper.java
@@ -16,6 +16,7 @@
package org.linaro.wallpaper;
+import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
@@ -51,7 +52,8 @@ public class LogoWallpaper extends WallpaperService {
return new WallpaperEngine();
}
- class WallpaperEngine extends Engine {
+ class WallpaperEngine extends Engine
+ implements SharedPreferences.OnSharedPreferenceChangeListener {
private final Runnable mDrawHandler = new Runnable() {
@Override
@@ -65,9 +67,13 @@ public class LogoWallpaper extends WallpaperService {
private final Bitmap mLogo;
private MovingDrawable mBox[];
+ private String mLocation = null;
private float mLogoX = 0;
private float mLogoY = 0;
+ private int mWidth=0;
+ private int mHeight=0;
+
//let's each box render mNumFrameDelays before starting to render the
//next box
private int mNumFrameDelays = 0;
@@ -81,12 +87,20 @@ public class LogoWallpaper extends WallpaperService {
@Override
public void onCreate(SurfaceHolder surfaceHolder) {
super.onCreate(surfaceHolder);
+ SharedPreferences sp = getSharedPreferences();
+ mLocation = sp.getString(LogoSettings.KEY_NAME, "Center");
+ sp.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onDestroy() {
super.onDestroy();
mHandler.removeCallbacks(mDrawHandler);
+ getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
+ }
+
+ private SharedPreferences getSharedPreferences() {
+ return LogoWallpaper.this.getSharedPreferences(LogoSettings.PREFS_NAME, 0);
}
@Override
@@ -145,6 +159,8 @@ public class LogoWallpaper extends WallpaperService {
int width, int height) {
super.onSurfaceChanged(holder, format, width, height);
+ mWidth = width;
+ mHeight = height;
initAnimation(width, height);
drawFrame();
}
@@ -208,5 +224,13 @@ public class LogoWallpaper extends WallpaperService {
c.restore();
}
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sp, String key) {
+ String val = sp.getString(key, mLocation);
+ mLocation = val;
+ initAnimation(mWidth, mHeight);
+ drawFrame();
+ }
}
}