Programacion BlackBerry 10
Programacion BlackBerry 10
The Game
Demo
Agenda
IDE introduction Layouting basics
10
11
Development mode
12
13
14
15
16
17
Preview
18
19
20
Debugging on Device
Debug using Breakpoints Or log messages
C++:
QML:
qDebug()<<Console message
console.log(Console Message)
24
Questions?
25
Core Controls
26
Start screen
Controls covered: Page Container Button ImageView Layouts covered: DockLayout StackLayout
27
StartScreen.qml
import bb.cascades 1.0
Page { Container { Button { text: "Play" } ImageView { imageSource: "asset:///images/bg_turtle.png" } } }
28
StartScreen.qml
29
Layouts
UI that scales
Screen sizes Resolutions
30
Start screen
StackLayout:
Buttons
DockLayout:
Header Turtle
31
StartScreen.qml
Page { Container { layout: DockLayout { } ImageView { imageSource: "asset:///images/bg.png" } Button { text: "Play" } ImageView { imageSource: "asset:///images/bg_turtle.png" } } }
32
StartScreen.qml
Page { Container { layout: DockLayout { } ImageView { imageSource: "asset:///images/bg.png" } Button { text: "Play" } ImageView { imageSource: "asset:///images/bg_turtle.png" } } }
33
StartScreen.qml
Page { Container { layout: DockLayout {} ImageView { imageSource: "asset:///images/bg.png" } Container { // our added container. StackLayout is default Button { text: "Play" } ImageView { imageSource: "asset:///images/bg_turtle.png" } } } }
34
StartScreen.qml
Page { Container { layout: DockLayout {} ImageView { imageSource: "asset:///images/bg.png" } Container { // our added container. StackLayout is default Button { text: "Play" } ImageView { imageSource: "asset:///images/bg_turtle.png" } } } }
35
StartScreen.qml
Alignment example
36
StartScreen.qml
... Container { layout: StackLayout {} horizontalAlignment: HorizontalAlignment.Center verticalAlignment: VerticalAlignment.Center Button { text: "Play" } ImageView { imageSource: "asset:///images/bg_turtle.png" } } ...
37
StartScreen.qml
... Container { layout: StackLayout {} horizontalAlignment: HorizontalAlignment.Center verticalAlignment: VerticalAlignment.Center Button { text: "Play" } ImageView { imageSource: "asset:///images/bg_turtle.png" } } ...
38
StartScreen.qml
import bb.cascades 1.0 Page { Container { layout: DockLayout {} ImageView { imageSource: "asset:///images/bg.png" } Container { horizontalAlignment: HorizontalAlignment.Center verticalAlignment: VerticalAlignment.Center Button { text: "Play" } } ImageView { horizontalAlignment: HorizontalAlignment.Left verticalAlignment: VerticalAlignment.Center imageSource: "asset:///images/bg_turtle.png" } } }
39
StartScreen.qml
import bb.cascades 1.0 Page { Container { layout: DockLayout {} ImageView { imageSource: "asset:///images/bg.png" } Container { horizontalAlignment: HorizontalAlignment.Center verticalAlignment: VerticalAlignment.Center Button { text: "Play" } } ImageView { horizontalAlignment: HorizontalAlignment.Left verticalAlignment: VerticalAlignment.Center imageSource: "asset:///images/bg_turtle.png" } } }
40
Importing a project
42
QML Components
Group QML into Components Project overview Readable code Reusable code
43
45
ListView
Highscore xml data model:
<root> <item name="Mattias" time="50000" moves="15"/> <item name="Olof" time="49800" moves="8"/> <item name="Shailesh" time="37500" moves="54"/> </root>
46
ListView
ListView { dataModel: XmlDataModel { source: "highscoredb/highscore.xml" } listItemComponents: [ ListItemComponent { type: "item" StandardListItem { title: ListItemData.name } } ] }
47
49
Label layouting
List items
StackLayout spaceQuota
sQ = 1 sQ = 5 sQ = 2 sQ = 2
51
Label layouting
Container { layout: StackLayout { orientation: LayoutOrientation.LeftToRight } Label { layoutProperties: StackLayoutProperties { spaceQuota: 1 } } Label { layoutProperties: StackLayoutProperties { spaceQuota: 3 } }
52
HighScoreScreen - Exercise
Create a ListView with an XML data model and your own List Item
53
Navigation
push
push
pop
pop
54
NavigationPane
import bb.cascades 1.0 NavigationPane { Page { id: firstPage Container { Button { text: "Do Something" } } } }
55
Attached Objects
import bb.cascades 1.0 NavigationPane { Page { id: firstPage Container { Button { text: "Do Something" } } } attachedObjects: [ ... ] }
56
Attached Objects
attachedObjects: [ Page { id: secondPage ... }, Page { id: thirdPage ... } ]
57
ComponentDefinition
attachedObjects: [ ComponentDefinition { id: secondPage source: "MySecondPage.qml" }, ComponentDefinition { id: thirdPage source: "MyThirdPage.qml" }, ] secondPage.createObject()
58
Signals
59
NavigationPane - Exercise
Set up navigation between the two Pages you create in the previous exercises.
60
Summary
IDE introduction Layouting basics
Questions?
62
Thank You
Navigation continued
TabbedPane
Sheet
Side bar
Core Controls
SegmentedControl ProgressIndicator ActivityIndicator DateTimePicker Slider ToggleButton WebView ForeignWindow
65