summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher2
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2011-11-21 12:31:42 -0800
committerWinson Chung <winsonc@google.com>2011-11-21 12:35:41 -0800
commitbb185bdd57fcdb2c8ff9eee00347b116bab7db23 (patch)
treec5e9154177a0665c5578e42ed0af3832204210e7 /src/com/android/launcher2
parent601cac2f3e2f3ce13d8e2e07dbe51945686044eb (diff)
downloadandroid_packages_apps_Trebuchet-bb185bdd57fcdb2c8ff9eee00347b116bab7db23.tar.gz
android_packages_apps_Trebuchet-bb185bdd57fcdb2c8ff9eee00347b116bab7db23.tar.bz2
android_packages_apps_Trebuchet-bb185bdd57fcdb2c8ff9eee00347b116bab7db23.zip
Fixing an issue where qsb press states could be out of sync. (Bug 5627327)
- Adding haptic feedback to qsb button clicks (Bug 5652304) Change-Id: I93d7c7a737f167d7ddf2b426d87e3a062feccac3
Diffstat (limited to 'src/com/android/launcher2')
-rw-r--r--src/com/android/launcher2/HolographicImageView.java4
-rw-r--r--src/com/android/launcher2/HolographicLinearLayout.java4
-rw-r--r--src/com/android/launcher2/HolographicViewHelper.java16
-rw-r--r--src/com/android/launcher2/Launcher.java24
4 files changed, 42 insertions, 6 deletions
diff --git a/src/com/android/launcher2/HolographicImageView.java b/src/com/android/launcher2/HolographicImageView.java
index 1d34cd6ba..9e551e047 100644
--- a/src/com/android/launcher2/HolographicImageView.java
+++ b/src/com/android/launcher2/HolographicImageView.java
@@ -39,6 +39,10 @@ public class HolographicImageView extends ImageView {
mHolographicHelper = new HolographicViewHelper(context);
}
+ void invalidatePressedFocusedStates() {
+ mHolographicHelper.invalidatePressedFocusedStates(this);
+ }
+
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
diff --git a/src/com/android/launcher2/HolographicLinearLayout.java b/src/com/android/launcher2/HolographicLinearLayout.java
index c6a8d6aff..a40c727b5 100644
--- a/src/com/android/launcher2/HolographicLinearLayout.java
+++ b/src/com/android/launcher2/HolographicLinearLayout.java
@@ -66,6 +66,10 @@ public class HolographicLinearLayout extends LinearLayout {
}
}
+ void invalidatePressedFocusedStates() {
+ mHolographicHelper.invalidatePressedFocusedStates(mImageView);
+ }
+
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
diff --git a/src/com/android/launcher2/HolographicViewHelper.java b/src/com/android/launcher2/HolographicViewHelper.java
index 11e81b4d3..fd499082f 100644
--- a/src/com/android/launcher2/HolographicViewHelper.java
+++ b/src/com/android/launcher2/HolographicViewHelper.java
@@ -42,7 +42,7 @@ public class HolographicViewHelper {
void generatePressedFocusedStates(ImageView v) {
if (!mStatesUpdated && v != null) {
mStatesUpdated = true;
- Bitmap outline = createGlowingOutline(v, mTempCanvas);
+ Bitmap outline = createPressImage(v, mTempCanvas);
FastBitmapDrawable d = new FastBitmapDrawable(outline);
StateListDrawable states = new StateListDrawable();
@@ -54,10 +54,20 @@ public class HolographicViewHelper {
}
/**
- * Returns a new bitmap to be used as the object outline, e.g. to visualize the drop location.
+ * Invalidates the pressed/focused states.
+ */
+ void invalidatePressedFocusedStates(ImageView v) {
+ mStatesUpdated = false;
+ if (v != null) {
+ v.invalidate();
+ }
+ }
+
+ /**
+ * Creates a new press state image which is the old image with a blue overlay.
* Responsibility for the bitmap is transferred to the caller.
*/
- private Bitmap createGlowingOutline(ImageView v, Canvas canvas) {
+ private Bitmap createPressImage(ImageView v, Canvas canvas) {
final int padding = HolographicOutlineHelper.MAX_OUTER_BLUR_RADIUS;
final Bitmap b = Bitmap.createBitmap(
v.getWidth() + padding, v.getHeight() + padding, Bitmap.Config.ARGB_8888);
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 43510c226..02a55a814 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -1709,6 +1709,8 @@ public final class Launcher extends Activity
* @param v The view that was clicked.
*/
public void onClickSearchButton(View v) {
+ v.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
+
onSearchRequested();
}
@@ -1718,10 +1720,8 @@ public final class Launcher extends Activity
* @param v The view that was clicked.
*/
public void onClickVoiceButton(View v) {
- startVoiceSearch();
- }
+ v.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
- private void startVoiceSearch() {
Intent intent = new Intent(RecognizerIntent.ACTION_WEB_SEARCH);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
startActivity(intent);
@@ -2661,6 +2661,16 @@ public final class Launcher extends Activity
button.setImageDrawable(d.newDrawable(getResources()));
}
+ private void invalidatePressedFocusedStates(View container, View button) {
+ if (container instanceof HolographicLinearLayout) {
+ HolographicLinearLayout layout = (HolographicLinearLayout) container;
+ layout.invalidatePressedFocusedStates();
+ } else if (button instanceof HolographicImageView) {
+ HolographicImageView view = (HolographicImageView) button;
+ view.invalidatePressedFocusedStates();
+ }
+ }
+
private boolean updateGlobalSearchIcon() {
final View searchButtonContainer = findViewById(R.id.search_button_container);
final ImageView searchButton = (ImageView) findViewById(R.id.search_button);
@@ -2678,6 +2688,7 @@ public final class Launcher extends Activity
if (searchDivider != null) searchDivider.setVisibility(View.VISIBLE);
if (searchButtonContainer != null) searchButtonContainer.setVisibility(View.VISIBLE);
searchButton.setVisibility(View.VISIBLE);
+ invalidatePressedFocusedStates(searchButtonContainer, searchButton);
return true;
} else {
// We disable both search and voice search when there is no global search provider
@@ -2691,7 +2702,10 @@ public final class Launcher extends Activity
}
private void updateGlobalSearchIcon(Drawable.ConstantState d) {
+ final View searchButtonContainer = findViewById(R.id.search_button_container);
+ final View searchButton = (ImageView) findViewById(R.id.search_button);
updateButtonWithDrawable(R.id.search_button, d);
+ invalidatePressedFocusedStates(searchButtonContainer, searchButton);
}
private boolean updateVoiceSearchIcon(boolean searchVisible) {
@@ -2709,6 +2723,7 @@ public final class Launcher extends Activity
if (searchDivider != null) searchDivider.setVisibility(View.VISIBLE);
if (voiceButtonContainer != null) voiceButtonContainer.setVisibility(View.VISIBLE);
voiceButton.setVisibility(View.VISIBLE);
+ invalidatePressedFocusedStates(voiceButtonContainer, voiceButton);
return true;
} else {
if (searchDivider != null) searchDivider.setVisibility(View.GONE);
@@ -2719,7 +2734,10 @@ public final class Launcher extends Activity
}
private void updateVoiceSearchIcon(Drawable.ConstantState d) {
+ final View voiceButtonContainer = findViewById(R.id.voice_button_container);
+ final View voiceButton = findViewById(R.id.voice_button);
updateButtonWithDrawable(R.id.voice_button, d);
+ invalidatePressedFocusedStates(voiceButtonContainer, voiceButton);
}
/**