From 789c7343371d915dd65f49f7028a3ffb285f567b Mon Sep 17 00:00:00 2001 From: Peter Osterlund Date: Sun, 10 Jun 2012 13:30:35 +0000 Subject: [PATCH] DroidFish: Added button touch visual feedback. --- DroidFish/res/raw/touch.svg | 153 ++++++++++++++++++ .../src/org/petero/droidfish/DroidFish.java | 46 +++--- 2 files changed, 173 insertions(+), 26 deletions(-) create mode 100644 DroidFish/res/raw/touch.svg diff --git a/DroidFish/res/raw/touch.svg b/DroidFish/res/raw/touch.svg new file mode 100644 index 0000000..4d71eb2 --- /dev/null +++ b/DroidFish/res/raw/touch.svg @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/DroidFish/src/org/petero/droidfish/DroidFish.java b/DroidFish/src/org/petero/droidfish/DroidFish.java index 3b00f30..787b861 100644 --- a/DroidFish/src/org/petero/droidfish/DroidFish.java +++ b/DroidFish/src/org/petero/droidfish/DroidFish.java @@ -75,6 +75,7 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Typeface; +import android.graphics.drawable.StateListDrawable; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; @@ -114,6 +115,7 @@ import android.view.View.OnTouchListener; import android.webkit.WebView; import android.widget.EditText; import android.widget.ImageButton; +import android.widget.ImageView.ScaleType; import android.widget.ScrollView; import android.widget.TextView; import android.widget.Toast; @@ -803,38 +805,30 @@ public class DroidFish extends Activity implements GUIInterface { bWidth = bWidth * 3 / 2; bHeight = bHeight * 3 / 2; } - SVG svg = SVGParser.getSVGFromResource(getResources(), - custom1ButtonActions.getIcon()); - custom1Button.setBackgroundDrawable(new SVGPictureDrawable(svg)); - svg = SVGParser.getSVGFromResource(getResources(), - custom2ButtonActions.getIcon()); - custom2Button.setBackgroundDrawable(new SVGPictureDrawable(svg)); - svg = SVGParser.getSVGFromResource(getResources(), - custom3ButtonActions.getIcon()); - custom3Button.setBackgroundDrawable(new SVGPictureDrawable(svg)); - - svg = SVGParser.getSVGFromResource(getResources(), R.raw.right); - redoButton.setBackgroundDrawable(new SVGPictureDrawable(svg)); - - svg = SVGParser.getSVGFromResource(getResources(), R.raw.left); - undoButton.setBackgroundDrawable(new SVGPictureDrawable(svg)); - - svg = SVGParser.getSVGFromResource(getResources(), R.raw.mode); - modeButton.setBackgroundDrawable(new SVGPictureDrawable(svg)); - - setButtonSize(custom1Button, bWidth, bHeight); - setButtonSize(custom2Button, bWidth, bHeight); - setButtonSize(custom3Button, bWidth, bHeight); - setButtonSize(modeButton, bWidth, bHeight); - setButtonSize(undoButton, bWidth, bHeight); - setButtonSize(redoButton, bWidth, bHeight); + SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.touch); + setButtonData(custom1Button, bWidth, bHeight, custom1ButtonActions.getIcon(), svg); + setButtonData(custom2Button, bWidth, bHeight, custom2ButtonActions.getIcon(), svg); + setButtonData(custom3Button, bWidth, bHeight, custom3ButtonActions.getIcon(), svg); + setButtonData(modeButton, bWidth, bHeight, R.raw.mode, svg); + setButtonData(undoButton, bWidth, bHeight, R.raw.left, svg); + setButtonData(redoButton, bWidth, bHeight, R.raw.right, svg); } - private static void setButtonSize(ImageButton button, int bWidth, int bHeight) { + private void setButtonData(ImageButton button, int bWidth, int bHeight, + int svgResId, SVG touched) { + SVG svg = SVGParser.getSVGFromResource(getResources(), svgResId); + button.setBackgroundDrawable(new SVGPictureDrawable(svg)); + + StateListDrawable sld = new StateListDrawable(); + sld.addState(new int[]{android.R.attr.state_pressed}, new SVGPictureDrawable(touched)); + button.setImageDrawable(sld); + LayoutParams lp = button.getLayoutParams(); lp.height = bHeight; lp.width = bWidth; button.setLayoutParams(lp); + button.setPadding(0,0,0,0); + button.setScaleType(ScaleType.FIT_XY); } private synchronized final void setWakeLock(boolean enableLock) {