Use GifImageView to display all the images in order to prevent slow playing of the gifs. Extend GifImageView as AspectRatioGifImageView to retain the features of AspectRatioImageView.

This commit is contained in:
Alex Ning
2018-12-22 10:42:24 +08:00
parent 33db4809e4
commit 60b659e651
11 changed files with 234 additions and 41 deletions

View File

@@ -0,0 +1,54 @@
package CustomView;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import com.felipecsl.gifimageview.library.GifImageView;
public class AspectRatioGifImageView extends GifImageView {
private float ratio;
public final float getRatio() {
return this.ratio;
}
public final void setRatio(float var1) {
this.ratio = var1;
}
private final void init(Context context, AttributeSet attrs) {
if (attrs != null) {
TypedArray a = context.obtainStyledAttributes(attrs, com.santalu.aspectratioimageview.R.styleable.AspectRatioImageView);
this.ratio = a.getFloat(com.santalu.aspectratioimageview.R.styleable.AspectRatioImageView_ari_ratio, 1.0F);
a.recycle();
}
}
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = this.getMeasuredWidth();
int height = this.getMeasuredHeight();
if (width != 0 || height != 0) {
if (width > 0) {
height = (int)((float)width * this.ratio);
} else {
width = (int)((float)height / this.ratio);
}
this.setMeasuredDimension(width, height);
}
}
public AspectRatioGifImageView(Context context) {
super(context);
this.ratio = 1.0F;
}
public AspectRatioGifImageView(Context context, AttributeSet attrs) {
super(context, attrs);
this.ratio = 1.0F;
this.init(context, attrs);
}
}