19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 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.view.animation; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.View; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.ViewGroup; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.TypedArray; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.AttributeSet; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Random; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A layout animation controller is used to animated a grid layout's children. 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * While {@link LayoutAnimationController} relies only on the index of the child 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * in the view group to compute the animation delay, this class uses both the 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * X and Y coordinates of the child within a grid. 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * In addition, the animation direction can be controlled. The default direction 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is <code>DIRECTION_LEFT_TO_RIGHT | DIRECTION_TOP_TO_BOTTOM</code>. You can 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * also set the animation priority to columns or rows. The default priority is 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * none. 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Information used to compute the animation delay of each child are stored 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * in an instance of 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.view.animation.GridLayoutAnimationController.AnimationParameters}, 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * itself stored in the {@link android.view.ViewGroup.LayoutParams} of the view. 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see LayoutAnimationController 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see android.widget.GridView 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @attr ref android.R.styleable#GridLayoutAnimation_columnDelay 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @attr ref android.R.styleable#GridLayoutAnimation_rowDelay 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @attr ref android.R.styleable#GridLayoutAnimation_direction 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @attr ref android.R.styleable#GridLayoutAnimation_directionPriority 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class GridLayoutAnimationController extends LayoutAnimationController { 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Animates the children starting from the left of the grid to the right. 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int DIRECTION_LEFT_TO_RIGHT = 0x0; 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Animates the children starting from the right of the grid to the left. 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int DIRECTION_RIGHT_TO_LEFT = 0x1; 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Animates the children starting from the top of the grid to the bottom. 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int DIRECTION_TOP_TO_BOTTOM = 0x0; 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Animates the children starting from the bottom of the grid to the top. 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int DIRECTION_BOTTOM_TO_TOP = 0x2; 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Bitmask used to retrieve the horizontal component of the direction. 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int DIRECTION_HORIZONTAL_MASK = 0x1; 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Bitmask used to retrieve the vertical component of the direction. 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int DIRECTION_VERTICAL_MASK = 0x2; 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Rows and columns are animated at the same time. 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int PRIORITY_NONE = 0; 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Columns are animated first. 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int PRIORITY_COLUMN = 1; 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Rows are animated first. 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int PRIORITY_ROW = 2; 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private float mColumnDelay; 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private float mRowDelay; 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mDirection; 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mDirectionPriority; 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Creates a new grid layout animation controller from external resources. 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param context the Context the view group is running in, through which 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * it can access the resources 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param attrs the attributes of the XML tag that is inflating the 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * layout animation controller 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public GridLayoutAnimationController(Context context, AttributeSet attrs) { 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super(context, attrs); 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TypedArray a = context.obtainStyledAttributes(attrs, 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project com.android.internal.R.styleable.GridLayoutAnimation); 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Animation.Description d = Animation.Description.parseValue( 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project a.peekValue(com.android.internal.R.styleable.GridLayoutAnimation_columnDelay)); 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mColumnDelay = d.value; 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project d = Animation.Description.parseValue( 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project a.peekValue(com.android.internal.R.styleable.GridLayoutAnimation_rowDelay)); 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRowDelay = d.value; 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //noinspection PointlessBitwiseExpression 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mDirection = a.getInt(com.android.internal.R.styleable.GridLayoutAnimation_direction, 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DIRECTION_LEFT_TO_RIGHT | DIRECTION_TOP_TO_BOTTOM); 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mDirectionPriority = a.getInt(com.android.internal.R.styleable.GridLayoutAnimation_directionPriority, 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PRIORITY_NONE); 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project a.recycle(); 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Creates a new layout animation controller with a delay of 50% 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for both rows and columns and the specified animation. 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param animation the animation to use on each child of the view group 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public GridLayoutAnimationController(Animation animation) { 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this(animation, 0.5f, 0.5f); 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Creates a new layout animation controller with the specified delays 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and the specified animation. 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param animation the animation to use on each child of the view group 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param columnDelay the delay by which each column animation must be offset 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param rowDelay the delay by which each row animation must be offset 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public GridLayoutAnimationController(Animation animation, float columnDelay, float rowDelay) { 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super(animation); 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mColumnDelay = columnDelay; 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRowDelay = rowDelay; 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the delay by which the children's animation are offset from one 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * column to the other. The delay is expressed as a fraction of the 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * animation duration. 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a fraction of the animation duration 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setColumnDelay(float) 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getRowDelay() 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setRowDelay(float) 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public float getColumnDelay() { 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mColumnDelay; 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the delay, as a fraction of the animation duration, by which the 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * children's animations are offset from one column to the other. 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param columnDelay a fraction of the animation duration 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getColumnDelay() 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getRowDelay() 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setRowDelay(float) 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setColumnDelay(float columnDelay) { 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mColumnDelay = columnDelay; 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the delay by which the children's animation are offset from one 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * row to the other. The delay is expressed as a fraction of the 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * animation duration. 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return a fraction of the animation duration 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setRowDelay(float) 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getColumnDelay() 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setColumnDelay(float) 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public float getRowDelay() { 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mRowDelay; 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the delay, as a fraction of the animation duration, by which the 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * children's animations are offset from one row to the other. 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param rowDelay a fraction of the animation duration 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getRowDelay() 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getColumnDelay() 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setColumnDelay(float) 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setRowDelay(float rowDelay) { 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRowDelay = rowDelay; 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the direction of the animation. {@link #DIRECTION_HORIZONTAL_MASK} 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and {@link #DIRECTION_VERTICAL_MASK} can be used to retrieve the 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * horizontal and vertical components of the direction. 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the direction of the animation 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setDirection(int) 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #DIRECTION_BOTTOM_TO_TOP 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #DIRECTION_TOP_TO_BOTTOM 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #DIRECTION_LEFT_TO_RIGHT 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #DIRECTION_RIGHT_TO_LEFT 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #DIRECTION_HORIZONTAL_MASK 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #DIRECTION_VERTICAL_MASK 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getDirection() { 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mDirection; 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the direction of the animation. The direction is expressed as an 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * integer containing a horizontal and vertical component. For instance, 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <code>DIRECTION_BOTTOM_TO_TOP | DIRECTION_RIGHT_TO_LEFT</code>. 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param direction the direction of the animation 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getDirection() 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #DIRECTION_BOTTOM_TO_TOP 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #DIRECTION_TOP_TO_BOTTOM 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #DIRECTION_LEFT_TO_RIGHT 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #DIRECTION_RIGHT_TO_LEFT 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #DIRECTION_HORIZONTAL_MASK 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #DIRECTION_VERTICAL_MASK 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setDirection(int direction) { 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mDirection = direction; 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the direction priority for the animation. The priority can 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be either {@link #PRIORITY_NONE}, {@link #PRIORITY_COLUMN} or 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #PRIORITY_ROW}. 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the priority of the animation direction 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #setDirectionPriority(int) 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #PRIORITY_COLUMN 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #PRIORITY_NONE 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #PRIORITY_ROW 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getDirectionPriority() { 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mDirectionPriority; 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Specifies the direction priority of the animation. For instance, 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #PRIORITY_COLUMN} will give priority to columns: the animation 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * will first play on the column, then on the rows.Z 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param directionPriority the direction priority of the animation 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getDirectionPriority() 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #PRIORITY_COLUMN 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #PRIORITY_NONE 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #PRIORITY_ROW 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setDirectionPriority(int directionPriority) { 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mDirectionPriority = directionPriority; 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean willOverlap() { 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mColumnDelay < 1.0f || mRowDelay < 1.0f; 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@inheritDoc} 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected long getDelayForView(View view) { 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ViewGroup.LayoutParams lp = view.getLayoutParams(); 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project AnimationParameters params = (AnimationParameters) lp.layoutAnimationParameters; 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (params == null) { 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int column = getTransformedColumnIndex(params); 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int row = getTransformedRowIndex(params); 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int rowsCount = params.rowsCount; 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int columnsCount = params.columnsCount; 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final long duration = mAnimation.getDuration(); 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final float columnDelay = mColumnDelay * duration; 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final float rowDelay = mRowDelay * duration; 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float totalDelay; 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long viewDelay; 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mInterpolator == null) { 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mInterpolator = new LinearInterpolator(); 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (mDirectionPriority) { 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case PRIORITY_COLUMN: 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project viewDelay = (long) (row * rowDelay + column * rowsCount * rowDelay); 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project totalDelay = rowsCount * rowDelay + columnsCount * rowsCount * rowDelay; 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case PRIORITY_ROW: 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project viewDelay = (long) (column * columnDelay + row * columnsCount * columnDelay); 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project totalDelay = columnsCount * columnDelay + rowsCount * columnsCount * columnDelay; 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case PRIORITY_NONE: 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project viewDelay = (long) (column * columnDelay + row * rowDelay); 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project totalDelay = columnsCount * columnDelay + rowsCount * rowDelay; 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float normalizedDelay = viewDelay / totalDelay; 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project normalizedDelay = mInterpolator.getInterpolation(normalizedDelay); 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (long) (normalizedDelay * totalDelay); 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int getTransformedColumnIndex(AnimationParameters params) { 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int index; 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (getOrder()) { 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case ORDER_REVERSE: 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project index = params.columnsCount - 1 - params.column; 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case ORDER_RANDOM: 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mRandomizer == null) { 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRandomizer = new Random(); 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project index = (int) (params.columnsCount * mRandomizer.nextFloat()); 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case ORDER_NORMAL: 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project index = params.column; 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int direction = mDirection & DIRECTION_HORIZONTAL_MASK; 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (direction == DIRECTION_RIGHT_TO_LEFT) { 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project index = params.columnsCount - 1 - index; 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return index; 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int getTransformedRowIndex(AnimationParameters params) { 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int index; 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (getOrder()) { 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case ORDER_REVERSE: 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project index = params.rowsCount - 1 - params.row; 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case ORDER_RANDOM: 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mRandomizer == null) { 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRandomizer = new Random(); 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project index = (int) (params.rowsCount * mRandomizer.nextFloat()); 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case ORDER_NORMAL: 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project index = params.row; 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int direction = mDirection & DIRECTION_VERTICAL_MASK; 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (direction == DIRECTION_BOTTOM_TO_TOP) { 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project index = params.rowsCount - 1 - index; 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return index; 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The set of parameters that has to be attached to each view contained in 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the view group animated by the grid layout animation controller. These 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * parameters are used to compute the start time of each individual view's 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * animation. 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static class AnimationParameters extends 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LayoutAnimationController.AnimationParameters { 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The view group's column to which the view belongs. 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int column; 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The view group's row to which the view belongs. 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int row; 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The number of columns in the view's enclosing grid layout. 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int columnsCount; 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The number of rows in the view's enclosing grid layout. 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int rowsCount; 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 425