diff options
author | Andy Doan <andy.doan@linaro.org> | 2011-12-05 23:07:06 -0600 |
---|---|---|
committer | Andy Doan <andy.doan@linaro.org> | 2011-12-06 15:14:26 -0600 |
commit | 1e893644610b991dda3c99911dc45a4be4a75dfc (patch) | |
tree | 3a9ad28dc2532d7c38245ac706af459b21147680 | |
parent | a3960ae511814d20bdb3572338d2af10ca1f685f (diff) | |
download | LinaroWallpaper-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.java | 26 |
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(); + } } } |