Skip to content

Instantly share code, notes, and snippets.

@vakrilov
Created March 16, 2015 13:00
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vakrilov/1cffd57578e202a657d0 to your computer and use it in GitHub Desktop.
Save vakrilov/1cffd57578e202a657d0 to your computer and use it in GitHub Desktop.
Native Script - Setting Gradients
function pageLoaded(args) {
var page = args.object;
if (page.android) {
setGradientAndroid(page);
}
else if (page.ios) {
setGradientIOS(page);
}
}
exports.pageLoaded = pageLoaded;
function setGradientAndroid(page) {
var colorsArray = java.lang.reflect.Array.newInstance(java.lang.Integer.class.getField("TYPE").get(null), 2);
colorsArray[0] = android.graphics.Color.parseColor("red");
colorsArray[1] = android.graphics.Color.parseColor("blue");
var gradient = new android.graphics.drawable.GradientDrawable(android.graphics.drawable.GradientDrawable.Orientation.TOP_BOTTOM, colorsArray);
page.android.setBackground(gradient);
}
function setGradientIOS(page) {
var pageView = page.ios.view;
var colorsArray = NSMutableArray.alloc().initWithCapacity(2);
colorsArray.addObject(interop.types.id(UIColor.redColor().CGColor));
colorsArray.addObject(interop.types.id(UIColor.blueColor().CGColor));
var gradientLayer = CAGradientLayer.layer();
gradientLayer.colors = colorsArray;
gradientLayer.frame = pageView.bounds;
pageView.layer.insertSublayerAtIndex(gradientLayer, 0);
}
<Page xmlns="http://www.nativescript.org/tns.xsd" loaded="pageLoaded">
<StackLayout>
<Label text="Hello"/>
</StackLayout>
</Page>
@Premitium
Copy link

Hey, I am looking for a way to access a GridLayout and change it's background to a gradient. Is there a way to select the GridLayout the same way you have selected the page object?

@aderbas
Copy link

aderbas commented Apr 9, 2016

I'm use TypeScript and compiler says: "Cannot find name 'android'" or "Cannot find name 'java'" how I do to fix it? #)

@nikolal
Copy link

nikolal commented May 28, 2016

colorsArray.addObject(interop.types.id(UIColor.redColor().CGColor));

How can use hex or RGB colors instead of a redColor() ????

@dondragon2
Copy link

var c = new Color("#00000F"); var uiColor = interop.types.id(c.ios.CGColor); colorsArray.addObject(uiColor);

I think something like that should work

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment