app/src/main/java/me/zhanghai/android/douya/ui/RatioFrameLayout.java
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
/*
* Copyright (c) 2015 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
* All Rights Reserved.
*/
package me.zhanghai.android.douya.ui;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.widget.FrameLayout;
public class RatioFrameLayout extends FrameLayout {
private float mRatio;
public RatioFrameLayout(Context context) {
super(context);
}
public RatioFrameLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public RatioFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public RatioFrameLayout(Context context, AttributeSet attrs, int defStyleAttr,
int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public float getRatio() {
return mRatio;
}
public void setRatio(float ratio) {
if (mRatio != ratio) {
mRatio = ratio;
requestLayout();
invalidate();
}
}
public void setRatio(float width, float height) {
setRatio(width / height);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (mRatio > 0) {
if (MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.EXACTLY) {
int height = MeasureSpec.getSize(heightMeasureSpec);
int width = Math.round(mRatio * height);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) {
width = Math.max(width, getMinimumWidth());
后面还有 15 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
