Skip to content

Commit

Permalink
fix(android): fix support for dynamically chaning gradient background
Browse files Browse the repository at this point in the history
  • Loading branch information
ypbnv committed Sep 17, 2019
1 parent 27be396 commit de3e711
Showing 1 changed file with 39 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
import org.appcelerator.titanium.view.TiGradientDrawable;
import org.appcelerator.titanium.view.TiUIView;

import java.util.HashMap;

public class TiUICardView extends TiUIView
{
public int paddingLeft, paddingTop, paddingRight, paddingBottom;
Expand Down Expand Up @@ -150,9 +152,7 @@ public void processProperties(KrollDict d)
super.processProperties(d);

if (d.containsKeyAndNotNull(TiC.PROPERTY_BACKGROUND_GRADIENT)) {
TiGradientDrawable tiGradientDrawable =
new TiGradientDrawable(this.cardView, d.getKrollDict(TiC.PROPERTY_BACKGROUND_GRADIENT));
this.cardView.setBackground(tiGradientDrawable);
setGradientBackground(d.getKrollDict(TiC.PROPERTY_BACKGROUND_GRADIENT));
}

if (d.containsKey(TiC.PROPERTY_BORDER_RADIUS)) {
Expand Down Expand Up @@ -264,102 +264,106 @@ public void propertyChanged(String key, Object oldValue, Object newValue, KrollP
Log.d(TAG, "Property: " + key + " old: " + oldValue + " new: " + newValue, Log.DEBUG_MODE);
}

TiCardView cardview = ((TiCardView) getNativeView());

if (key.equals(TiC.PROPERTY_BACKGROUND_COLOR)) {
cardview.setCardBackgroundColor(TiConvert.toColor(TiConvert.toString(newValue)));
cardview.requestLayout();
if (key.equals(TiC.PROPERTY_BACKGROUND_GRADIENT)) {
setGradientBackground(new KrollDict(((HashMap) newValue)));
this.cardView.requestLayout();
} else if (key.equals(TiC.PROPERTY_BORDER_RADIUS)) {
float radius = 0;
TiDimension radiusDim = TiConvert.toTiDimension(newValue, TiDimension.TYPE_WIDTH);
if (radiusDim != null) {
radius = (float) radiusDim.getPixels(cardview);
radius = (float) radiusDim.getPixels(this.cardView);
}
cardview.setRadius(radius);
cardview.requestLayout();
this.cardView.setRadius(radius);
this.cardView.requestLayout();
} else if (key.equals(TiC.PROPERTY_ELEVATION)) {
cardview.setCardElevation(TiConvert.toFloat(newValue));
cardview.requestLayout();
this.cardView.setCardElevation(TiConvert.toFloat(newValue));
this.cardView.requestLayout();
} else if (key.equals(TiC.PROPERTY_PREVENT_CORNER_OVERLAP)) {
cardview.setPreventCornerOverlap(TiConvert.toBoolean(newValue, false));
cardview.requestLayout();
this.cardView.setPreventCornerOverlap(TiConvert.toBoolean(newValue, false));
this.cardView.requestLayout();
} else if (key.equals(TiC.PROPERTY_USE_COMPAT_PADDING)) {
cardview.setUseCompatPadding(TiConvert.toBoolean(newValue, false));
cardview.requestLayout();
this.cardView.setUseCompatPadding(TiConvert.toBoolean(newValue, false));
this.cardView.requestLayout();
} else if (key.equals(TiC.PROPERTY_PADDING)) {
float radiusRight = 0;
TiDimension radiusDimRight = TiConvert.toTiDimension(TiConvert.toString(newValue), TiDimension.TYPE_RIGHT);
if (radiusDimRight != null) {
radiusRight = (float) radiusDimRight.getPixels(cardview);
radiusRight = (float) radiusDimRight.getPixels(this.cardView);
}
paddingRight = (int) radiusRight;

float radiusBottom = 0;
TiDimension radiusDimBottom =
TiConvert.toTiDimension(TiConvert.toString(newValue), TiDimension.TYPE_BOTTOM);
if (radiusDimBottom != null) {
radiusBottom = (float) radiusDimBottom.getPixels(cardview);
radiusBottom = (float) radiusDimBottom.getPixels(this.cardView);
}
paddingBottom = (int) radiusBottom;

float radiusLeft = 0;
TiDimension radiusDimLeft = TiConvert.toTiDimension(TiConvert.toString(newValue), TiDimension.TYPE_LEFT);
if (radiusDimLeft != null) {
radiusLeft = (float) radiusDimLeft.getPixels(cardview);
radiusLeft = (float) radiusDimLeft.getPixels(this.cardView);
}
paddingLeft = (int) radiusLeft;

float radiusTop = 0;
TiDimension radiusDimTop = TiConvert.toTiDimension(TiConvert.toString(newValue), TiDimension.TYPE_TOP);
if (radiusDimTop != null) {
radiusTop = (float) radiusDimTop.getPixels(cardview);
radiusTop = (float) radiusDimTop.getPixels(this.cardView);
}
paddingTop = (int) radiusTop;

cardview.setContentPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
cardview.requestLayout();
this.cardView.setContentPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
this.cardView.requestLayout();
} else if (key.equals(TiC.PROPERTY_PADDING_BOTTOM)) {
float radiusBottom = 0;
TiDimension radiusDimBottom =
TiConvert.toTiDimension(TiConvert.toString(newValue), TiDimension.TYPE_BOTTOM);
if (radiusDimBottom != null) {
radiusBottom = (float) radiusDimBottom.getPixels(cardview);
radiusBottom = (float) radiusDimBottom.getPixels(this.cardView);
}
paddingBottom = (int) radiusBottom;
cardview.setContentPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
cardview.requestLayout();
this.cardView.setContentPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
this.cardView.requestLayout();
} else if (key.equals(TiC.PROPERTY_PADDING_LEFT)) {
float radiusLeft = 0;
TiDimension radiusDimLeft = TiConvert.toTiDimension(TiConvert.toString(newValue), TiDimension.TYPE_LEFT);
if (radiusDimLeft != null) {
radiusLeft = (float) radiusDimLeft.getPixels(cardview);
radiusLeft = (float) radiusDimLeft.getPixels(this.cardView);
}
paddingLeft = (int) radiusLeft;
cardview.setContentPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
cardview.requestLayout();
this.cardView.setContentPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
this.cardView.requestLayout();
} else if (key.equals(TiC.PROPERTY_PADDING_RIGHT)) {
float radiusRight = 0;
TiDimension radiusDimRight = TiConvert.toTiDimension(TiConvert.toString(newValue), TiDimension.TYPE_RIGHT);
if (radiusDimRight != null) {
radiusRight = (float) radiusDimRight.getPixels(cardview);
radiusRight = (float) radiusDimRight.getPixels(this.cardView);
}
paddingRight = (int) radiusRight;
cardview.setContentPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
cardview.requestLayout();
this.cardView.setContentPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
this.cardView.requestLayout();
} else if (key.equals(TiC.PROPERTY_PADDING_TOP)) {
float radiusTop = 0;
TiDimension radiusDimTop = TiConvert.toTiDimension(TiConvert.toString(newValue), TiDimension.TYPE_TOP);
if (radiusDimTop != null) {
radiusTop = (float) radiusDimTop.getPixels(cardview);
radiusTop = (float) radiusDimTop.getPixels(this.cardView);
}
paddingTop = (int) radiusTop;
cardview.setContentPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
cardview.requestLayout();
this.cardView.setContentPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
this.cardView.requestLayout();
} else {
super.propertyChanged(key, oldValue, newValue, proxy);
}
}

private void setGradientBackground(KrollDict gradientBackgroundProperties)
{
TiGradientDrawable tiGradientDrawable = new TiGradientDrawable(this.cardView, gradientBackgroundProperties);
this.cardView.setBackground(tiGradientDrawable);
}

@Override
protected boolean hasBorder(KrollDict d)
{
Expand Down

0 comments on commit de3e711

Please sign in to comment.