From 207968345aa31c4a6286d16ee6a8adb14f64092a Mon Sep 17 00:00:00 2001 From: Ben Kwa Date: Thu, 20 Aug 2015 13:10:33 -0700 Subject: Make grid items be square. Introduce a new GridItem class whose onMeasure method enforces a square aspect ratio, and use it for rendering items when in grid mode. Change-Id: Ieda82b644d0155354ee8e4c1dacae4af7436b7aa --- packages/DocumentsUI/res/layout/item_doc_grid.xml | 4 +- .../DocumentsUI/res/layout/item_loading_grid.xml | 4 +- .../DocumentsUI/res/layout/item_message_grid.xml | 4 +- .../src/com/android/documentsui/GridItem.java | 51 ++++++++++++++++++++++ 4 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 packages/DocumentsUI/src/com/android/documentsui/GridItem.java diff --git a/packages/DocumentsUI/res/layout/item_doc_grid.xml b/packages/DocumentsUI/res/layout/item_doc_grid.xml index 1001e105bcd0..71e618bf4314 100644 --- a/packages/DocumentsUI/res/layout/item_doc_grid.xml +++ b/packages/DocumentsUI/res/layout/item_doc_grid.xml @@ -14,7 +14,7 @@ limitations under the License. --> - - + diff --git a/packages/DocumentsUI/res/layout/item_loading_grid.xml b/packages/DocumentsUI/res/layout/item_loading_grid.xml index 005a111beabd..147dfd449724 100644 --- a/packages/DocumentsUI/res/layout/item_loading_grid.xml +++ b/packages/DocumentsUI/res/layout/item_loading_grid.xml @@ -14,7 +14,7 @@ limitations under the License. --> - @@ -26,4 +26,4 @@ android:indeterminate="true" style="?android:attr/progressBarStyle" /> - + diff --git a/packages/DocumentsUI/res/layout/item_message_grid.xml b/packages/DocumentsUI/res/layout/item_message_grid.xml index 385563df64f6..45d61a506bb5 100644 --- a/packages/DocumentsUI/res/layout/item_message_grid.xml +++ b/packages/DocumentsUI/res/layout/item_message_grid.xml @@ -14,7 +14,7 @@ limitations under the License. --> - - + diff --git a/packages/DocumentsUI/src/com/android/documentsui/GridItem.java b/packages/DocumentsUI/src/com/android/documentsui/GridItem.java new file mode 100644 index 000000000000..990dca70f9c6 --- /dev/null +++ b/packages/DocumentsUI/src/com/android/documentsui/GridItem.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.documentsui; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.FrameLayout; + +/** + * A FrameLayout subclass used by DirectoryFragment. Ensures that the resulting grid item is always + * square. + */ +public class GridItem extends FrameLayout { + public GridItem(Context context) { + super(context); + } + + public GridItem(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public GridItem(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + // Grid layout uses item width to figure out the number of columns, then dynamically fits + // rows into the view. The upshot of this is that changing the item width will mess up the + // grid layout - so to make the items square, throw out the height and use the width for + // both dimensions. The grid layout will correctly adjust the row height. + // + // Note that this code will need to be changed if the layout manager's orientation is + // changed from VERTICAL to HORIZONTAL. + super.onMeasure(widthMeasureSpec, widthMeasureSpec); + } +} -- cgit v1.2.3-59-g8ed1b