feat:Android support corners animation

This commit is contained in:
pengfei.zhou
2019-11-29 16:01:50 +08:00
parent d56556fb4a
commit 8b22f3e362
4 changed files with 53 additions and 9 deletions

View File

@@ -151,4 +151,11 @@ public class DoricLayer extends FrameLayout {
};
}
public float getCornerRadius() {
if (mCornerRadii != null) {
return mCornerRadii[0];
}
return 0;
}
}

View File

@@ -215,7 +215,15 @@ public abstract class ViewNode<T extends View> extends DoricContextHolder {
break;
case "corners":
if (prop.isNumber()) {
requireDoricLayer().setCornerRadius(DoricUtils.dp2px(prop.asNumber().toFloat()));
if (isAnimating()) {
addAnimator(ObjectAnimator.ofFloat(
this,
name,
getCorners(),
prop.asNumber().toFloat()));
} else {
setCorners(prop.asNumber().toFloat());
}
} else if (prop.isObject()) {
JSValue lt = prop.asObject().getProperty("leftTop");
JSValue rt = prop.asObject().getProperty("rightTop");
@@ -454,4 +462,15 @@ public abstract class ViewNode<T extends View> extends DoricContextHolder {
public void setBgColor(int color) {
mView.setBackgroundColor(color);
}
@DoricMethod
public void setCorners(float corner) {
requireDoricLayer().setCornerRadius(DoricUtils.dp2px(corner));
getNodeView().invalidate();
}
@DoricMethod
public float getCorners() {
return DoricUtils.px2dp((int) requireDoricLayer().getCornerRadius());
}
}