1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.internal.widget;
18 
19 /**
20  * An interface that can be implemented by Views to provide scroll related APIs.
21  */
22 public interface ScrollingView {
23     /**
24      * <p>Compute the horizontal range that the horizontal scrollbar
25      * represents.</p>
26      *
27      * <p>The range is expressed in arbitrary units that must be the same as the
28      * units used by {@link #computeHorizontalScrollExtent()} and
29      * {@link #computeHorizontalScrollOffset()}.</p>
30      *
31      * <p>The default range is the drawing width of this view.</p>
32      *
33      * @return the total horizontal range represented by the horizontal
34      *         scrollbar
35      *
36      * @see #computeHorizontalScrollExtent()
37      * @see #computeHorizontalScrollOffset()
38      * @see android.widget.ScrollBarDrawable
39      */
computeHorizontalScrollRange()40     int computeHorizontalScrollRange();
41 
42     /**
43      * <p>Compute the horizontal offset of the horizontal scrollbar's thumb
44      * within the horizontal range. This value is used to compute the position
45      * of the thumb within the scrollbar's track.</p>
46      *
47      * <p>The range is expressed in arbitrary units that must be the same as the
48      * units used by {@link #computeHorizontalScrollRange()} and
49      * {@link #computeHorizontalScrollExtent()}.</p>
50      *
51      * <p>The default offset is the scroll offset of this view.</p>
52      *
53      * @return the horizontal offset of the scrollbar's thumb
54      *
55      * @see #computeHorizontalScrollRange()
56      * @see #computeHorizontalScrollExtent()
57      * @see android.widget.ScrollBarDrawable
58      */
computeHorizontalScrollOffset()59     int computeHorizontalScrollOffset();
60 
61     /**
62      * <p>Compute the horizontal extent of the horizontal scrollbar's thumb
63      * within the horizontal range. This value is used to compute the length
64      * of the thumb within the scrollbar's track.</p>
65      *
66      * <p>The range is expressed in arbitrary units that must be the same as the
67      * units used by {@link #computeHorizontalScrollRange()} and
68      * {@link #computeHorizontalScrollOffset()}.</p>
69      *
70      * <p>The default extent is the drawing width of this view.</p>
71      *
72      * @return the horizontal extent of the scrollbar's thumb
73      *
74      * @see #computeHorizontalScrollRange()
75      * @see #computeHorizontalScrollOffset()
76      * @see android.widget.ScrollBarDrawable
77      */
computeHorizontalScrollExtent()78     int computeHorizontalScrollExtent();
79 
80     /**
81      * <p>Compute the vertical range that the vertical scrollbar represents.</p>
82      *
83      * <p>The range is expressed in arbitrary units that must be the same as the
84      * units used by {@link #computeVerticalScrollExtent()} and
85      * {@link #computeVerticalScrollOffset()}.</p>
86      *
87      * @return the total vertical range represented by the vertical scrollbar
88      *
89      * <p>The default range is the drawing height of this view.</p>
90      *
91      * @see #computeVerticalScrollExtent()
92      * @see #computeVerticalScrollOffset()
93      * @see android.widget.ScrollBarDrawable
94      */
computeVerticalScrollRange()95     int computeVerticalScrollRange();
96 
97     /**
98      * <p>Compute the vertical offset of the vertical scrollbar's thumb
99      * within the horizontal range. This value is used to compute the position
100      * of the thumb within the scrollbar's track.</p>
101      *
102      * <p>The range is expressed in arbitrary units that must be the same as the
103      * units used by {@link #computeVerticalScrollRange()} and
104      * {@link #computeVerticalScrollExtent()}.</p>
105      *
106      * <p>The default offset is the scroll offset of this view.</p>
107      *
108      * @return the vertical offset of the scrollbar's thumb
109      *
110      * @see #computeVerticalScrollRange()
111      * @see #computeVerticalScrollExtent()
112      * @see android.widget.ScrollBarDrawable
113      */
computeVerticalScrollOffset()114     int computeVerticalScrollOffset();
115 
116     /**
117      * <p>Compute the vertical extent of the vertical scrollbar's thumb
118      * within the vertical range. This value is used to compute the length
119      * of the thumb within the scrollbar's track.</p>
120      *
121      * <p>The range is expressed in arbitrary units that must be the same as the
122      * units used by {@link #computeVerticalScrollRange()} and
123      * {@link #computeVerticalScrollOffset()}.</p>
124      *
125      * <p>The default extent is the drawing height of this view.</p>
126      *
127      * @return the vertical extent of the scrollbar's thumb
128      *
129      * @see #computeVerticalScrollRange()
130      * @see #computeVerticalScrollOffset()
131      * @see android.widget.ScrollBarDrawable
132      */
computeVerticalScrollExtent()133     int computeVerticalScrollExtent();
134 }
135