HandleView.java revision 81393d6dc5767f7784a00958095614a37bf1a91a
1ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi/* 2ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * Copyright (C) 2010 The Android Open Source Project 3ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * 4ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * Licensed under the Apache License, Version 2.0 (the "License"); 5ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * you may not use this file except in compliance with the License. 6ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * You may obtain a copy of the License at 7ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * 8ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * http://www.apache.org/licenses/LICENSE-2.0 9ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * 10ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * Unless required by applicable law or agreed to in writing, software 11ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * distributed under the License is distributed on an "AS IS" BASIS, 12ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * See the License for the specific language governing permissions and 14ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * limitations under the License. 15ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi */ 16ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 1781393d6dc5767f7784a00958095614a37bf1a91aGil Dobjanschipackage com.android.videoeditor.widgets; 18ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 1981393d6dc5767f7784a00958095614a37bf1a91aGil Dobjanschiimport com.android.videoeditor.R; 20ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 21ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschiimport android.content.Context; 22ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschiimport android.content.res.Resources; 23ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschiimport android.graphics.Canvas; 24ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschiimport android.graphics.drawable.Drawable; 25ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschiimport android.util.AttributeSet; 26ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschiimport android.view.MotionEvent; 27ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschiimport android.widget.ImageView; 28ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 29ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi/** 30ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * The view that represents a resize handle 31ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi */ 32ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschipublic class HandleView extends ImageView { 33ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi // Instance variables 34ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi private final Drawable mArrowLeft; 35ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi private final Drawable mArrowRight; 36ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi private MoveListener mListener; 37c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi private float mStartMoveX, mLastMoveX; 38ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi private boolean mMoveStarted; 39ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi private boolean mBeginLimitReached, mEndLimitReached; 40590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi private int mLastDeltaX; 41ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 42ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi /** 43ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * Move listener 44ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi */ 45ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi public interface MoveListener { 46ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi /** 47ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * The move begins 48ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * 49ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * @param view The view 50ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi */ 51ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi public void onMoveBegin(HandleView view); 52ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 53ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi /** 54ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * Move is in progress 55ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * 56ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * @param view The view 57590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi * @param left The left edge left position 58590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi * @param delta The offset relative to the left of the view 59ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi */ 60590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi public boolean onMove(HandleView view, int left, int delta); 61ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 62ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi /** 63ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * The move ended 64ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * 65ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * @param view The view 66590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi * @param left The left edge left position 67590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi * @param delta The offset relative to the left of the view 68ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi */ 69590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi public void onMoveEnd(HandleView view, int left, int delta); 70ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 71ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 72ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi /* 73ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * {@inheritDoc} 74ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi */ 75ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi public HandleView(Context context, AttributeSet attrs, int defStyle) { 76ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi super(context, attrs, defStyle); 77ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 78ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi // Prepare the handle arrows 79ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi final Resources resources = getResources(); 80ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi mArrowLeft = resources.getDrawable(R.drawable.handle_left_arrow); 81ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi mArrowRight = resources.getDrawable(R.drawable.handle_right_arrow); 82ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 83ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 84ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi /* 85ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * {@inheritDoc} 86ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi */ 87ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi public HandleView(Context context, AttributeSet attrs) { 88ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi this(context, attrs, 0); 89ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 90ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 91ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi /* 92ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * {@inheritDoc} 93ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi */ 94ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi public HandleView(Context context) { 95ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi this(context, null, 0); 96ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 97ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 98ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi /** 99ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * @param listener The listener 100ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi */ 101ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi public void setListener(MoveListener listener) { 102ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi mListener = listener; 103ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 104ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 105ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi /** 106ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * Set the movement limits 107ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * 108ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * @param beginLimitReached true if the begin limit was reached 109ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * @param endLimitReached true if the end limit was reached 110ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi */ 111ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi public void setLimitReached(boolean beginLimitReached, boolean endLimitReached) { 112ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi // Check if anything has changed 113ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi if (beginLimitReached == mBeginLimitReached && endLimitReached == mEndLimitReached) { 114ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi return; 115ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 116ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 117ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi mBeginLimitReached = beginLimitReached; 118ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi mEndLimitReached = endLimitReached; 119ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 120ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi invalidate(); 121ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 122ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 123c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi /** 124c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi * End the move 125c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi */ 126c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi public void endMove() { 127c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi if (mMoveStarted) { 128c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi endActionMove(mLastMoveX); 129c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi } 130c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi } 131c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi 132ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi /* 133ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * {@inheritDoc} 134ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi */ 135ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi @Override 136ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi public boolean onTouchEvent(MotionEvent ev) { 137ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi super.onTouchEvent(ev); 138ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 139ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi switch (ev.getAction()) { 140ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi case MotionEvent.ACTION_DOWN: { 141ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi if (isEnabled()) { 142ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi // The ScrollView will not get the touch events 143ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi getParent().requestDisallowInterceptTouchEvent(true); 144ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi if (mListener != null) { 145ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi mListener.onMoveBegin(this); 146ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 147ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 148ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi mStartMoveX = ev.getX(); 149ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi mMoveStarted = true; 150ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } else { 151ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi mMoveStarted = false; 152ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 153590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi 154590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi mLastDeltaX = -10000; 155ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi break; 156ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 157ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 158ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi case MotionEvent.ACTION_MOVE: { 159ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi if (mMoveStarted && isEnabled()) { 160590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi final int deltaX = Math.round((ev.getX() - mStartMoveX)); 161590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi if (deltaX != mLastDeltaX) { 162590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi mLastDeltaX = deltaX; 163590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi 164590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi if (mListener != null) { 165590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi if (getId() == R.id.handle_left) { 166590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi mListener.onMove(this, getLeft(), deltaX + getWidth()); 167590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi } else { 168590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi mListener.onMove(this, getLeft(), deltaX); 169590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi } 170590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi } 171590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi 172590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi mLastMoveX = ev.getX(); 173ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 174ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 175ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi break; 176ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 177ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 178ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi case MotionEvent.ACTION_CANCEL: 179ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi case MotionEvent.ACTION_UP: { 180c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi endActionMove(ev.getX()); 181ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi break; 182ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 183ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 184ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi default: { 185ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi break; 186ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 187ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 188ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 189ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi return true; 190ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 191ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 192c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi /** 193c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi * End the move (if it was in progress) 194c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi * 195c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi * @param eventX The event horizontal position 196c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi */ 197c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi private void endActionMove(float eventX) { 198c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi if (mMoveStarted) { 199c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi mMoveStarted = false; 200590396edcdcc30e4770d19b8903f81150eab71cbGil Dobjanschi 2011b5e90e3748ca3ed3bfa5f2d49f18123d373ad0cGil Dobjanschi if (mListener != null) { 2021b5e90e3748ca3ed3bfa5f2d49f18123d373ad0cGil Dobjanschi final int deltaX = Math.round((eventX - mStartMoveX)); 2031b5e90e3748ca3ed3bfa5f2d49f18123d373ad0cGil Dobjanschi if (getId() == R.id.handle_left) { 2041b5e90e3748ca3ed3bfa5f2d49f18123d373ad0cGil Dobjanschi mListener.onMoveEnd(this, getLeft(), deltaX + getWidth()); 2051b5e90e3748ca3ed3bfa5f2d49f18123d373ad0cGil Dobjanschi } else { 2061b5e90e3748ca3ed3bfa5f2d49f18123d373ad0cGil Dobjanschi mListener.onMoveEnd(this, getLeft(), deltaX); 2071b5e90e3748ca3ed3bfa5f2d49f18123d373ad0cGil Dobjanschi } 208c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi } 209c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi } 210c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi } 211c509d6b57b3dba1d24dd4e68b315f2e565ae47a5Gil Dobjanschi 212ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi /* 213ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi * {@inheritDoc} 214ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi */ 215ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi @Override 216ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi protected void onDraw(Canvas canvas) { 217ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi super.onDraw(canvas); 218ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 219ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi if (!mBeginLimitReached) { 220ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi mArrowLeft.setBounds(0, 0, mArrowLeft.getIntrinsicWidth(), 221ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi mArrowLeft.getIntrinsicHeight()); 222ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi mArrowLeft.draw(canvas); 223ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 224ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi 225ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi if (!mEndLimitReached) { 226ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi mArrowRight.setBounds(getWidth() - mArrowRight.getIntrinsicWidth(), 0, getWidth(), 227ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi mArrowRight.getIntrinsicHeight()); 228ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi mArrowRight.draw(canvas); 229ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 230ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi } 231ace3cdb462fef9563a0470223c62a7e80e6d587aGil Dobjanschi} 232