Remove AspectRatioImageView
This commit is contained in:
@@ -1,138 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2015 Dominik Schürmann <dominik@dominikschuermann.de>
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.sufficientlysecure.keychain.ui.widget;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.res.TypedArray;
|
|
||||||
import android.util.AttributeSet;
|
|
||||||
import android.widget.ImageView;
|
|
||||||
|
|
||||||
import org.sufficientlysecure.keychain.R;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Maintains an aspect ratio based on either width or height. Disabled by default.
|
|
||||||
*
|
|
||||||
* from https://gist.github.com/JakeWharton/2856179
|
|
||||||
*/
|
|
||||||
public class AspectRatioImageView extends ImageView {
|
|
||||||
// NOTE: These must be kept in sync with the AspectRatioImageView attributes in attrs.xml.
|
|
||||||
public static final int MEASUREMENT_WIDTH = 0;
|
|
||||||
public static final int MEASUREMENT_HEIGHT = 1;
|
|
||||||
|
|
||||||
private static final float DEFAULT_ASPECT_RATIO = 1f;
|
|
||||||
private static final boolean DEFAULT_ASPECT_RATIO_ENABLED = false;
|
|
||||||
private static final int DEFAULT_DOMINANT_MEASUREMENT = MEASUREMENT_WIDTH;
|
|
||||||
|
|
||||||
private float aspectRatio;
|
|
||||||
private boolean aspectRatioEnabled;
|
|
||||||
private int dominantMeasurement;
|
|
||||||
|
|
||||||
public AspectRatioImageView(Context context) {
|
|
||||||
this(context, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public AspectRatioImageView(Context context, AttributeSet attrs) {
|
|
||||||
super(context, attrs);
|
|
||||||
|
|
||||||
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AspectRatioImageView);
|
|
||||||
aspectRatio = a.getFloat(R.styleable.AspectRatioImageView_aspectRatio, DEFAULT_ASPECT_RATIO);
|
|
||||||
aspectRatioEnabled = a.getBoolean(R.styleable.AspectRatioImageView_aspectRatioEnabled,
|
|
||||||
DEFAULT_ASPECT_RATIO_ENABLED);
|
|
||||||
dominantMeasurement = a.getInt(R.styleable.AspectRatioImageView_dominantMeasurement,
|
|
||||||
DEFAULT_DOMINANT_MEASUREMENT);
|
|
||||||
a.recycle();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
|
||||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
|
||||||
if (!aspectRatioEnabled) return;
|
|
||||||
|
|
||||||
int newWidth;
|
|
||||||
int newHeight;
|
|
||||||
switch (dominantMeasurement) {
|
|
||||||
case MEASUREMENT_WIDTH:
|
|
||||||
newWidth = getMeasuredWidth();
|
|
||||||
newHeight = (int) (newWidth * aspectRatio);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MEASUREMENT_HEIGHT:
|
|
||||||
newHeight = getMeasuredHeight();
|
|
||||||
newWidth = (int) (newHeight * aspectRatio);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
throw new IllegalStateException("Unknown measurement with ID " + dominantMeasurement);
|
|
||||||
}
|
|
||||||
|
|
||||||
setMeasuredDimension(newWidth, newHeight);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the aspect ratio for this image view.
|
|
||||||
*/
|
|
||||||
public float getAspectRatio() {
|
|
||||||
return aspectRatio;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the aspect ratio for this image view. This will update the view instantly.
|
|
||||||
*/
|
|
||||||
public void setAspectRatio(float aspectRatio) {
|
|
||||||
this.aspectRatio = aspectRatio;
|
|
||||||
if (aspectRatioEnabled) {
|
|
||||||
requestLayout();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get whether or not forcing the aspect ratio is enabled.
|
|
||||||
*/
|
|
||||||
public boolean getAspectRatioEnabled() {
|
|
||||||
return aspectRatioEnabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* set whether or not forcing the aspect ratio is enabled. This will re-layout the view.
|
|
||||||
*/
|
|
||||||
public void setAspectRatioEnabled(boolean aspectRatioEnabled) {
|
|
||||||
this.aspectRatioEnabled = aspectRatioEnabled;
|
|
||||||
requestLayout();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the dominant measurement for the aspect ratio.
|
|
||||||
*/
|
|
||||||
public int getDominantMeasurement() {
|
|
||||||
return dominantMeasurement;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the dominant measurement for the aspect ratio.
|
|
||||||
*
|
|
||||||
* @see #MEASUREMENT_WIDTH
|
|
||||||
* @see #MEASUREMENT_HEIGHT
|
|
||||||
*/
|
|
||||||
public void setDominantMeasurement(int dominantMeasurement) {
|
|
||||||
if (dominantMeasurement != MEASUREMENT_HEIGHT && dominantMeasurement != MEASUREMENT_WIDTH) {
|
|
||||||
throw new IllegalArgumentException("Invalid measurement type.");
|
|
||||||
}
|
|
||||||
this.dominantMeasurement = dominantMeasurement;
|
|
||||||
requestLayout();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -10,15 +10,6 @@
|
|||||||
<attr name="unFoldedLabel" format="string" />
|
<attr name="unFoldedLabel" format="string" />
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
|
|
||||||
<declare-styleable name="AspectRatioImageView">
|
|
||||||
<attr name="aspectRatio" format="float" />
|
|
||||||
<attr name="aspectRatioEnabled" format="boolean" />
|
|
||||||
<attr name="dominantMeasurement">
|
|
||||||
<enum name="width" value="0" />
|
|
||||||
<enum name="height" value="1" />
|
|
||||||
</attr>
|
|
||||||
</declare-styleable>
|
|
||||||
|
|
||||||
<!-- Taken from Matt Allen Password Strength View
|
<!-- Taken from Matt Allen Password Strength View
|
||||||
https://github.com/matt-allen/android-password-strength-indicator -->
|
https://github.com/matt-allen/android-password-strength-indicator -->
|
||||||
<declare-styleable name="PasswordStrengthView">
|
<declare-styleable name="PasswordStrengthView">
|
||||||
|
|||||||
Reference in New Issue
Block a user