17149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas/* 27149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * Copyright (C) 2017 The Android Open Source Project 37149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 47149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * Licensed under the Apache License, Version 2.0 (the "License"); 57149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * you may not use this file except in compliance with the License. 67149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * You may obtain a copy of the License at 77149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 87149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * http://www.apache.org/licenses/LICENSE-2.0 97149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 107149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * Unless required by applicable law or agreed to in writing, software 117149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * distributed under the License is distributed on an "AS IS" BASIS, 127149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * See the License for the specific language governing permissions and 147149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * limitations under the License. 157149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas */ 167149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas 177149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikaspackage com.android.internal.widget; 187149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas 197149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas/** 207149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * An interface that can be implemented by Views to provide scroll related APIs. 217149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas */ 227149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikaspublic interface ScrollingView { 237149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas /** 247149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>Compute the horizontal range that the horizontal scrollbar 257149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * represents.</p> 267149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 277149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>The range is expressed in arbitrary units that must be the same as the 287149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * units used by {@link #computeHorizontalScrollExtent()} and 297149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * {@link #computeHorizontalScrollOffset()}.</p> 307149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 317149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>The default range is the drawing width of this view.</p> 327149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 337149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @return the total horizontal range represented by the horizontal 347149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * scrollbar 357149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 367149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see #computeHorizontalScrollExtent() 377149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see #computeHorizontalScrollOffset() 387149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see android.widget.ScrollBarDrawable 397149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas */ 407149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas int computeHorizontalScrollRange(); 417149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas 427149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas /** 437149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>Compute the horizontal offset of the horizontal scrollbar's thumb 447149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * within the horizontal range. This value is used to compute the position 457149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * of the thumb within the scrollbar's track.</p> 467149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 477149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>The range is expressed in arbitrary units that must be the same as the 487149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * units used by {@link #computeHorizontalScrollRange()} and 497149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * {@link #computeHorizontalScrollExtent()}.</p> 507149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 517149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>The default offset is the scroll offset of this view.</p> 527149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 537149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @return the horizontal offset of the scrollbar's thumb 547149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 557149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see #computeHorizontalScrollRange() 567149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see #computeHorizontalScrollExtent() 577149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see android.widget.ScrollBarDrawable 587149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas */ 597149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas int computeHorizontalScrollOffset(); 607149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas 617149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas /** 627149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>Compute the horizontal extent of the horizontal scrollbar's thumb 637149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * within the horizontal range. This value is used to compute the length 647149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * of the thumb within the scrollbar's track.</p> 657149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 667149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>The range is expressed in arbitrary units that must be the same as the 677149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * units used by {@link #computeHorizontalScrollRange()} and 687149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * {@link #computeHorizontalScrollOffset()}.</p> 697149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 707149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>The default extent is the drawing width of this view.</p> 717149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 727149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @return the horizontal extent of the scrollbar's thumb 737149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 747149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see #computeHorizontalScrollRange() 757149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see #computeHorizontalScrollOffset() 767149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see android.widget.ScrollBarDrawable 777149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas */ 787149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas int computeHorizontalScrollExtent(); 797149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas 807149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas /** 817149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>Compute the vertical range that the vertical scrollbar represents.</p> 827149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 837149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>The range is expressed in arbitrary units that must be the same as the 847149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * units used by {@link #computeVerticalScrollExtent()} and 857149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * {@link #computeVerticalScrollOffset()}.</p> 867149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 877149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @return the total vertical range represented by the vertical scrollbar 887149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 897149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>The default range is the drawing height of this view.</p> 907149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 917149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see #computeVerticalScrollExtent() 927149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see #computeVerticalScrollOffset() 937149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see android.widget.ScrollBarDrawable 947149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas */ 957149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas int computeVerticalScrollRange(); 967149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas 977149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas /** 987149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>Compute the vertical offset of the vertical scrollbar's thumb 997149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * within the horizontal range. This value is used to compute the position 1007149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * of the thumb within the scrollbar's track.</p> 1017149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 1027149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>The range is expressed in arbitrary units that must be the same as the 1037149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * units used by {@link #computeVerticalScrollRange()} and 1047149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * {@link #computeVerticalScrollExtent()}.</p> 1057149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 1067149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>The default offset is the scroll offset of this view.</p> 1077149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 1087149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @return the vertical offset of the scrollbar's thumb 1097149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 1107149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see #computeVerticalScrollRange() 1117149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see #computeVerticalScrollExtent() 1127149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see android.widget.ScrollBarDrawable 1137149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas */ 1147149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas int computeVerticalScrollOffset(); 1157149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas 1167149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas /** 1177149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>Compute the vertical extent of the vertical scrollbar's thumb 1187149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * within the vertical range. This value is used to compute the length 1197149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * of the thumb within the scrollbar's track.</p> 1207149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 1217149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>The range is expressed in arbitrary units that must be the same as the 1227149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * units used by {@link #computeVerticalScrollRange()} and 1237149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * {@link #computeVerticalScrollOffset()}.</p> 1247149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 1257149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * <p>The default extent is the drawing height of this view.</p> 1267149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 1277149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @return the vertical extent of the scrollbar's thumb 1287149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * 1297149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see #computeVerticalScrollRange() 1307149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see #computeVerticalScrollOffset() 1317149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas * @see android.widget.ScrollBarDrawable 1327149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas */ 1337149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas int computeVerticalScrollExtent(); 1347149a63961c5fe6706160bc717a3b6cbb083ca54Aurimas Liutikas} 135