diff options
author | Winson Chung <winsonc@google.com> | 2011-10-07 13:11:56 -0700 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2011-10-11 17:39:07 -0700 |
commit | 7d3810d8337e4f030796b566a2d562fcf79b0a22 (patch) | |
tree | 905e2716716d24e3196f8c21bf015a710ce3219e /src/com/android/launcher2/HolographicViewHelper.java | |
parent | 3a02e82cfff354ba5e4444114b1ae2a1d5ac2862 (diff) | |
download | android_packages_apps_Trebuchet-7d3810d8337e4f030796b566a2d562fcf79b0a22.tar.gz android_packages_apps_Trebuchet-7d3810d8337e4f030796b566a2d562fcf79b0a22.tar.bz2 android_packages_apps_Trebuchet-7d3810d8337e4f030796b566a2d562fcf79b0a22.zip |
Changing press feedback to holographic for search buttons. (Bug: 5290367)
Change-Id: I50fa849abb816a98d1dbbfd9bf6611fbb87baca9
Diffstat (limited to 'src/com/android/launcher2/HolographicViewHelper.java')
-rw-r--r-- | src/com/android/launcher2/HolographicViewHelper.java | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/com/android/launcher2/HolographicViewHelper.java b/src/com/android/launcher2/HolographicViewHelper.java new file mode 100644 index 000000000..c68a5eaad --- /dev/null +++ b/src/com/android/launcher2/HolographicViewHelper.java @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.launcher2; + +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.drawable.StateListDrawable; +import android.view.View; + +public class HolographicViewHelper { + + private final HolographicOutlineHelper mOutlineHelper = new HolographicOutlineHelper(); + private final Canvas mTempCanvas = new Canvas(); + + private boolean mStatesUpdated; + private int mHighlightColor; + + public HolographicViewHelper(Context context) { + Resources res = context.getResources(); + mHighlightColor = res.getColor(android.R.color.holo_blue_light); + } + + /** + * Generate the pressed/focused states if necessary. + */ + void generatePressedFocusedStates(View v) { + if (!mStatesUpdated) { + mStatesUpdated = true; + Bitmap outline = createGlowingOutline(v, mTempCanvas, mHighlightColor, mHighlightColor); + FastBitmapDrawable d = new FastBitmapDrawable(outline); + + StateListDrawable states = new StateListDrawable(); + states.addState(new int[] {android.R.attr.state_pressed}, d); + states.addState(new int[] {android.R.attr.state_focused}, d); + v.setBackgroundDrawable(states); + } + } + + /** + * Returns a new bitmap to be used as the object outline, e.g. to visualize the drop location. + * Responsibility for the bitmap is transferred to the caller. + */ + private Bitmap createGlowingOutline(View v, Canvas canvas, int outlineColor, int glowColor) { + final int padding = HolographicOutlineHelper.MAX_OUTER_BLUR_RADIUS; + final Bitmap b = Bitmap.createBitmap( + v.getWidth() + padding, v.getHeight() + padding, Bitmap.Config.ARGB_8888); + + canvas.setBitmap(b); + canvas.save(); + v.draw(canvas); + canvas.restore(); + mOutlineHelper.applyOuterBlur(b, canvas, outlineColor); + canvas.setBitmap(null); + + return b; + } +} |