1 /*
2  * Copyright (C) 2014 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5  * in compliance with the License. You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software distributed under the License
10  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11  * or implied. See the License for the specific language governing permissions and limitations under
12  * the License.
13  */
14 
15 package androidx.leanback.widget;
16 
17 import static androidx.recyclerview.widget.RecyclerView.HORIZONTAL;
18 import static androidx.recyclerview.widget.RecyclerView.VERTICAL;
19 
20 import android.view.View;
21 
22 /**
23  * Defines alignment position on two directions of an item view. Typically item
24  * view alignment is at the center of the view. The class allows defining
25  * alignment at left/right or fixed offset/percentage position; it also allows
26  * using descendant view by id match.
27  */
28 class ItemAlignment {
29 
30     final static class Axis extends ItemAlignmentFacet.ItemAlignmentDef {
31         private int mOrientation;
32 
Axis(int orientation)33         Axis(int orientation) {
34             mOrientation = orientation;
35         }
36 
37         /**
38          * get alignment position relative to optical left/top of itemView.
39          */
getAlignmentPosition(View itemView)40         public int getAlignmentPosition(View itemView) {
41             return ItemAlignmentFacetHelper.getAlignmentPosition(itemView, this, mOrientation);
42         }
43     }
44 
45     private int mOrientation = HORIZONTAL;
46 
47     final public Axis vertical = new Axis(VERTICAL);
48 
49     final public Axis horizontal = new Axis(HORIZONTAL);
50 
51     private Axis mMainAxis = horizontal;
52 
53     private Axis mSecondAxis = vertical;
54 
mainAxis()55     final public Axis mainAxis() {
56         return mMainAxis;
57     }
58 
secondAxis()59     final public Axis secondAxis() {
60         return mSecondAxis;
61     }
62 
setOrientation(int orientation)63     final public void setOrientation(int orientation) {
64         mOrientation = orientation;
65         if (mOrientation == HORIZONTAL) {
66             mMainAxis = horizontal;
67             mSecondAxis = vertical;
68         } else {
69             mMainAxis = vertical;
70             mSecondAxis = horizontal;
71         }
72     }
73 
getOrientation()74     final public int getOrientation() {
75         return mOrientation;
76     }
77 
78 
79 }
80