1 /*
2  * Copyright (C) 2013 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.photos.views;
18 
19 import android.content.Context;
20 import android.util.AttributeSet;
21 import android.widget.ImageView;
22 
23 
24 public class SquareImageView extends ImageView {
25 
SquareImageView(Context context)26     public SquareImageView(Context context) {
27         super(context);
28     }
29 
SquareImageView(Context context, AttributeSet attrs)30     public SquareImageView(Context context, AttributeSet attrs) {
31         super(context, attrs);
32     }
33 
SquareImageView(Context context, AttributeSet attrs, int defStyle)34     public SquareImageView(Context context, AttributeSet attrs, int defStyle) {
35         super(context, attrs, defStyle);
36     }
37 
38     @Override
onMeasure(int widthMeasureSpec, int heightMeasureSpec)39     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
40         int widthMode = MeasureSpec.getMode(widthMeasureSpec);
41         int heightMode = MeasureSpec.getMode(heightMeasureSpec);
42         if (widthMode == MeasureSpec.EXACTLY && heightMode != MeasureSpec.EXACTLY) {
43             int width = MeasureSpec.getSize(widthMeasureSpec);
44             int height = width;
45             if (heightMode == MeasureSpec.AT_MOST) {
46                 height = Math.min(height, MeasureSpec.getSize(heightMeasureSpec));
47             }
48             setMeasuredDimension(width, height);
49         } else {
50             super.onMeasure(widthMeasureSpec, heightMeasureSpec);
51         }
52     }
53 }
54