19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.widget; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Canvas; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.ColorFilter; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.PixelFormat; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Rect; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.drawable.Drawable; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This is only used by View for displaying its scroll bars. It should probably 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be moved in to the view package since it is used in that lower-level layer. 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * For now, we'll hide it so it can be cleaned up later. 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ScrollBarDrawable extends Drawable { 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Drawable mVerticalTrack; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Drawable mHorizontalTrack; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Drawable mVerticalThumb; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private Drawable mHorizontalThumb; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mRange; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mOffset; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mExtent; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mVertical; 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mChanged; 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mRangeChanged; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final Rect mTempBounds = new Rect(); 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mAlwaysDrawHorizontalTrack; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mAlwaysDrawVerticalTrack; 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ScrollBarDrawable() { 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicate whether the horizontal scrollbar track should always be drawn regardless of the 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * extent. Defaults to false. 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param alwaysDrawTrack Set to true if the track should always be drawn 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setAlwaysDrawHorizontalTrack(boolean alwaysDrawTrack) { 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlwaysDrawHorizontalTrack = alwaysDrawTrack; 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicate whether the vertical scrollbar track should always be drawn regardless of the 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * extent. Defaults to false. 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param alwaysDrawTrack Set to true if the track should always be drawn 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setAlwaysDrawVerticalTrack(boolean alwaysDrawTrack) { 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAlwaysDrawVerticalTrack = alwaysDrawTrack; 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates whether the vertical scrollbar track should always be drawn regardless of the 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * extent. 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean getAlwaysDrawVerticalTrack() { 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAlwaysDrawVerticalTrack; 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates whether the horizontal scrollbar track should always be drawn regardless of the 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * extent. 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean getAlwaysDrawHorizontalTrack() { 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAlwaysDrawHorizontalTrack; 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setParameters(int range, int offset, int extent, boolean vertical) { 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mVertical != vertical) { 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mChanged = true; 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mRange != range || mOffset != offset || mExtent != extent) { 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRangeChanged = true; 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRange = range; 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOffset = offset; 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mExtent = extent; 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mVertical = vertical; 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void draw(Canvas canvas) { 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final boolean vertical = mVertical; 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int extent = mExtent; 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int range = mRange; 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean drawTrack = true; 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean drawThumb = true; 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (extent <= 0 || range <= extent) { 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project drawTrack = vertical ? mAlwaysDrawVerticalTrack : mAlwaysDrawHorizontalTrack; 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project drawThumb = false; 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Rect r = getBounds(); 1148fb954263dd2f918ad339045cc6d82e346515599Romain Guy if (canvas.quickReject(r.left, r.top, r.right, r.bottom, Canvas.EdgeType.AA)) { 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (drawTrack) { 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project drawTrack(canvas, r, vertical); 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (drawThumb) { 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int size = vertical ? r.height() : r.width(); 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int thickness = vertical ? r.width() : r.height(); 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int length = Math.round((float) size * extent / range); 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int offset = Math.round((float) (size - length) * mOffset / (range - extent)); 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // avoid the tiny thumb 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int minLength = thickness * 2; 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (length < minLength) { 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project length = minLength; 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // avoid the too-big thumb 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (offset + length > size) { 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project offset = size - length; 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project drawThumb(canvas, r, offset, length, vertical); 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onBoundsChange(Rect bounds) { 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onBoundsChange(bounds); 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mChanged = true; 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void drawTrack(Canvas canvas, Rect bounds, boolean vertical) { 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Drawable track; 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (vertical) { 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project track = mVerticalTrack; 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project track = mHorizontalTrack; 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (track != null) { 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mChanged) { 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project track.setBounds(bounds); 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project track.draw(canvas); 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void drawThumb(Canvas canvas, Rect bounds, int offset, int length, boolean vertical) { 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final Rect thumbRect = mTempBounds; 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final boolean changed = mRangeChanged || mChanged; 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (changed) { 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (vertical) { 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project thumbRect.set(bounds.left, bounds.top + offset, 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bounds.right, bounds.top + offset + length); 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project thumbRect.set(bounds.left + offset, bounds.top, 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bounds.left + offset + length, bounds.bottom); 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (vertical) { 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final Drawable thumb = mVerticalThumb; 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (changed) thumb.setBounds(thumbRect); 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project thumb.draw(canvas); 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final Drawable thumb = mHorizontalThumb; 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (changed) thumb.setBounds(thumbRect); 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project thumb.draw(canvas); 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setVerticalThumbDrawable(Drawable thumb) { 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (thumb != null) { 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mVerticalThumb = thumb; 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setVerticalTrackDrawable(Drawable track) { 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mVerticalTrack = track; 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setHorizontalThumbDrawable(Drawable thumb) { 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (thumb != null) { 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mHorizontalThumb = thumb; 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setHorizontalTrackDrawable(Drawable track) { 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mHorizontalTrack = track; 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getSize(boolean vertical) { 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (vertical) { 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (mVerticalTrack != null ? 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mVerticalTrack : mVerticalThumb).getIntrinsicWidth(); 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (mHorizontalTrack != null ? 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mHorizontalTrack : mHorizontalThumb).getIntrinsicHeight(); 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setAlpha(int alpha) { 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mVerticalTrack != null) { 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mVerticalTrack.setAlpha(alpha); 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mVerticalThumb.setAlpha(alpha); 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mHorizontalTrack != null) { 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mHorizontalTrack.setAlpha(alpha); 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mHorizontalThumb.setAlpha(alpha); 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setColorFilter(ColorFilter cf) { 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mVerticalTrack != null) { 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mVerticalTrack.setColorFilter(cf); 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mVerticalThumb.setColorFilter(cf); 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mHorizontalTrack != null) { 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mHorizontalTrack.setColorFilter(cf); 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mHorizontalThumb.setColorFilter(cf); 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getOpacity() { 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return PixelFormat.TRANSLUCENT; 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "ScrollBarDrawable: range=" + mRange + " offset=" + mOffset + 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project " extent=" + mExtent + (mVertical ? " V" : " H"); 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 253