NativeScript Slides for iOS and Android
###The plugin formally known as nativescript-intro-slides
###Intro slides example:

###Image carousel example:

videos by Brad Martin
##Example Usage:
###XML
<Slides:SlideContainer>
<Slides:Slide class="slide-1">
<Label text="This is Panel 1" />
</Slides:Slide>
<Slides:Slide class="slide-2">
<Label text="This is Panel 2" />
</Slides:Slide>
<Slides:Slide class="slide-3">
<Label text="This is Panel 3" />
</Slides:Slide>
<Slides:Slide class="slide-4">
<Label text="This is Panel 4" />
</Slides:Slide>
<Slides:Slide class="slide-5">
<Label text="This is Panel 5" />
</Slides:Slide>
</Slides:SlideContainer>
###CSS
.slide-1{
background-color: darkslateblue;
}
.slide-2{
background-color: darkcyan;
}
.slide-3{
background-color: darkgreen;
}
.slide-4{
background-color: darkgoldenrod;
}
.slide-5{
background-color: darkslategray;
}
Label{
text-align: center;
width: 100%;
font-size: 35;
margin-top: 35;
}
Great for Intros/Tutorials to Image Carousels.
To use the intro slide plugin you need to first import it into your xml layout with xmlns:Slides="nativescript-slides"
when using the intro slide plugin you need at least two <Slides:Slide> views inside of the <Slides:SlideContainer>.
add as many <Slides:Slide> as you want.
the SlideContainer class also has public nextSlide and previousSlide functions so you can add your own previous and next buttons as needed.
the <Slides:SlideContainer> element also has a property called loop which is a boolean value and if set to true will cause the slide to be an endless loop. The suggested use case would be for a Image Carousel or something of that nature.
the <Slides:SlideContainer> element also has a property called velocityScrolling which is a boolean value and if set to true will calculate transitions speeds based on the finger movement speed.
the <Slides:SlideContainer> element also has a property called pageIndicators which will add indicator dots to the bottom of your slides.
the <Slides:SlideContainer> element also has a property called interval which is a integer value and the value is in milliseconds. The suggested use case would be for a Image Carousel or something of that nature which can change the image for every fixed intervals. In unloaded function call page.getViewById("your_id").stopSlideshow() to unregister it (your_id is the id given to <Slides:SlideContainer>), it can be restarted with startSlidShow.
Angular 2 compatibility
To use the slides with Angular2 and the registerElement from nativescript-angular you will want to set the SlideContainer's property of angular to true. Then in your angular component in the ngAfterViewInit. you will want to have an instance of your slide container to call the function constructView().
Android Optional Attributes
androidTranslucentStatusBar: boolean - If true, the Android status bar will be translucent on devices that support it. (Android sdk >= 19).
androidTranslucentNavBar: boolean - If true, the Android navigation bar will be translucent on devices that support it. (Android sdk >= 19).
Plugin Development Work Flow:
- Clone repository to your machine.
- Run
npm run setup to prepare the demo project
- Build with
npm run build
- Run and deploy to your device or emulator with
npm run demo.android or npm run demo.ios
Known issues
- There apears to be a bug with the loop resulting in bad transitions going right to left.
Smoother panning on Android (For {N} v2.0.0 and below only).
To achieve a much smoother drag on android simply go into the gestures.android.js file in the tns-core-modules here
/node_modules/tns-core-modules/ui/gestures/gestures.android.js
and change
CustomPanGestureDetector.prototype.getMotionEventCenter = function (event) {
var count = event.getPointerCount();
var res = { x: 0, y: 0 };
for (var i = 0; i < count; i++) {
res.x += event.getX(i);
res.y += event.getY(i);
}
res.x /= (count * this.density);
res.y /= (count * this.density);
return res;
};
to
CustomPanGestureDetector.prototype.getMotionEventCenter = function (event) {
var count = event.getPointerCount();
var res = { x: 0, y: 0 };
for (var i = 0; i < count; i++) {
res.x += event.getRawX();
res.y += event.getRawY();
}
res.x /= (count * this.density);
res.y /= (count * this.density);
return res;
};
please note this will change the panning gesture for your entire project.
###Thanks to these awesome contributors!
Brad Martin
Obsessive Inc/Abhijith Reddy
Victor Nascimento
And thanks to Nathan Walker for setting up the {N} plugin seed that was used to help get this plugin up and running. More info can be found about it here:
https://github.com/NathanWalker/nativescript-plugin-seed
##Contributing guidelines
Contributing guidelines
##License
MIT
for {N} version 2.0.0+