diff options
Diffstat (limited to 'src/com/android/gallery3d/ui/UndoBarView.java')
-rw-r--r-- | src/com/android/gallery3d/ui/UndoBarView.java | 211 |
1 files changed, 0 insertions, 211 deletions
diff --git a/src/com/android/gallery3d/ui/UndoBarView.java b/src/com/android/gallery3d/ui/UndoBarView.java deleted file mode 100644 index 42f12ae72..000000000 --- a/src/com/android/gallery3d/ui/UndoBarView.java +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright (C) 2012 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.gallery3d.ui; - -import android.content.Context; -import android.view.MotionEvent; - -import com.android.gallery3d.R; -import com.android.gallery3d.common.Utils; -import com.android.gallery3d.glrenderer.GLCanvas; -import com.android.gallery3d.glrenderer.NinePatchTexture; -import com.android.gallery3d.glrenderer.ResourceTexture; -import com.android.gallery3d.glrenderer.StringTexture; -import com.android.gallery3d.util.GalleryUtils; - -public class UndoBarView extends GLView { - @SuppressWarnings("unused") - private static final String TAG = "UndoBarView"; - - private static final int WHITE = 0xFFFFFFFF; - private static final int GRAY = 0xFFAAAAAA; - - private final NinePatchTexture mPanel; - private final StringTexture mUndoText; - private final StringTexture mDeletedText; - private final ResourceTexture mUndoIcon; - private final int mBarHeight; - private final int mBarMargin; - private final int mUndoTextMargin; - private final int mIconSize; - private final int mIconMargin; - private final int mSeparatorTopMargin; - private final int mSeparatorBottomMargin; - private final int mSeparatorRightMargin; - private final int mSeparatorWidth; - private final int mDeletedTextMargin; - private final int mClickRegion; - - private OnClickListener mOnClickListener; - private boolean mDownOnButton; - - // This is the layout of UndoBarView. The unit is dp. - // - // +-+----+----------------+-+--+----+-+------+--+-+ - // 48 | | | Deleted | | | <- | | UNDO | | | - // +-+----+----------------+-+--+----+-+------+--+-+ - // 4 16 1 12 32 8 16 4 - public UndoBarView(Context context) { - mBarHeight = GalleryUtils.dpToPixel(48); - mBarMargin = GalleryUtils.dpToPixel(4); - mUndoTextMargin = GalleryUtils.dpToPixel(16); - mIconMargin = GalleryUtils.dpToPixel(8); - mIconSize = GalleryUtils.dpToPixel(32); - mSeparatorRightMargin = GalleryUtils.dpToPixel(12); - mSeparatorTopMargin = GalleryUtils.dpToPixel(10); - mSeparatorBottomMargin = GalleryUtils.dpToPixel(10); - mSeparatorWidth = GalleryUtils.dpToPixel(1); - mDeletedTextMargin = GalleryUtils.dpToPixel(16); - - mPanel = new NinePatchTexture(context, R.drawable.panel_undo_holo); - mUndoText = StringTexture.newInstance(context.getString(R.string.undo), - GalleryUtils.dpToPixel(12), GRAY, 0, true); - mDeletedText = StringTexture.newInstance( - context.getString(R.string.deleted), - GalleryUtils.dpToPixel(16), WHITE); - mUndoIcon = new ResourceTexture( - context, R.drawable.ic_menu_revert_holo_dark); - mClickRegion = mBarMargin + mUndoTextMargin + mUndoText.getWidth() - + mIconMargin + mIconSize + mSeparatorRightMargin; - } - - public void setOnClickListener(OnClickListener listener) { - mOnClickListener = listener; - } - - @Override - protected void onMeasure(int widthSpec, int heightSpec) { - setMeasuredSize(0 /* unused */, mBarHeight); - } - - @Override - protected void render(GLCanvas canvas) { - super.render(canvas); - advanceAnimation(); - - canvas.save(GLCanvas.SAVE_FLAG_ALPHA); - canvas.multiplyAlpha(mAlpha); - - int w = getWidth(); - int h = getHeight(); - mPanel.draw(canvas, mBarMargin, 0, w - mBarMargin * 2, mBarHeight); - - int x = w - mBarMargin; - int y; - - x -= mUndoTextMargin + mUndoText.getWidth(); - y = (mBarHeight - mUndoText.getHeight()) / 2; - mUndoText.draw(canvas, x, y); - - x -= mIconMargin + mIconSize; - y = (mBarHeight - mIconSize) / 2; - mUndoIcon.draw(canvas, x, y, mIconSize, mIconSize); - - x -= mSeparatorRightMargin + mSeparatorWidth; - y = mSeparatorTopMargin; - canvas.fillRect(x, y, mSeparatorWidth, - mBarHeight - mSeparatorTopMargin - mSeparatorBottomMargin, GRAY); - - x = mBarMargin + mDeletedTextMargin; - y = (mBarHeight - mDeletedText.getHeight()) / 2; - mDeletedText.draw(canvas, x, y); - - canvas.restore(); - } - - @Override - protected boolean onTouch(MotionEvent event) { - switch (event.getAction()) { - case MotionEvent.ACTION_DOWN: - mDownOnButton = inUndoButton(event); - break; - case MotionEvent.ACTION_UP: - if (mDownOnButton) { - if (mOnClickListener != null && inUndoButton(event)) { - mOnClickListener.onClick(this); - } - mDownOnButton = false; - } - break; - case MotionEvent.ACTION_CANCEL: - mDownOnButton = false; - break; - } - return true; - } - - // Check if the event is on the right of the separator - private boolean inUndoButton(MotionEvent event) { - float x = event.getX(); - float y = event.getY(); - int w = getWidth(); - int h = getHeight(); - return (x >= w - mClickRegion && x < w && y >= 0 && y < h); - } - - //////////////////////////////////////////////////////////////////////////// - // Alpha Animation - //////////////////////////////////////////////////////////////////////////// - - private static final long NO_ANIMATION = -1; - private static long ANIM_TIME = 200; - private long mAnimationStartTime = NO_ANIMATION; - private float mFromAlpha, mToAlpha; - private float mAlpha; - - private static float getTargetAlpha(int visibility) { - return (visibility == VISIBLE) ? 1f : 0f; - } - - @Override - public void setVisibility(int visibility) { - mAlpha = getTargetAlpha(visibility); - mAnimationStartTime = NO_ANIMATION; - super.setVisibility(visibility); - invalidate(); - } - - public void animateVisibility(int visibility) { - float target = getTargetAlpha(visibility); - if (mAnimationStartTime == NO_ANIMATION && mAlpha == target) return; - if (mAnimationStartTime != NO_ANIMATION && mToAlpha == target) return; - - mFromAlpha = mAlpha; - mToAlpha = target; - mAnimationStartTime = AnimationTime.startTime(); - - super.setVisibility(VISIBLE); - invalidate(); - } - - private void advanceAnimation() { - if (mAnimationStartTime == NO_ANIMATION) return; - - float delta = (float) (AnimationTime.get() - mAnimationStartTime) / - ANIM_TIME; - mAlpha = mFromAlpha + ((mToAlpha > mFromAlpha) ? delta : -delta); - mAlpha = Utils.clamp(mAlpha, 0f, 1f); - - if (mAlpha == mToAlpha) { - mAnimationStartTime = NO_ANIMATION; - if (mAlpha == 0) { - super.setVisibility(INVISIBLE); - } - } - invalidate(); - } -} |