Sailfish应用开发入门(一)ApplicationWindow与Cover

一、Sailfish Silica 基于QT Quick提供了Sailfish的UI界面。每个Sailfish 引用必须定义为一个Qt C++应用项目,在项目里使用QDeclarativeView加载应用UI。

      

#include <QApplication>

#include <QDeclarativeView>



#include "sailfishapplication.h"



Q_DECL_EXPORT int main(int argc, char *argv[])

{

    QScopedPointer<QApplication> app(Sailfish::createApplication(argc, argv));

    QScopedPointer<QDeclarativeView> view(Sailfish::createView("main.qml"));

    

    Sailfish::showView(view.data());

    view->showFullScreen();

    return app->exec();

}

 


 

二、Sailfish是多任务系统,所有的应用都有两种状态:Active和Background
        Active:占用所有可用屏幕
        Backgroud:准备显示到主屏幕(home screen)

       我们可以使用ApplicationWindow.applicationActive属性获取应用状态,当应用在前台运行则状态为true,如果在后台运行则状态为false.
       注:在后台运行的应用必须保证最小资源占用。例如所有的资源必须暂停,并且释放无用的资源。

      

import QtQuick 1.1

import Sailfish.Silica 1.0

import "pages"



ApplicationWindow

{

    initialPage: Page {

        Label {

            text: "Hello Micky!"

            anchors.centerIn: parent

            RotationAnimation on rotation {

                from: 0

                to: 360

                duration: 2000

                loops: Animation.Infinite

                running: applicationActive

            }

        }

    }

}

        Sailfish OS中所有运行中的的应用均可以在主界面以“Cover”的形式显示。当一个应用被移到后台运行后Cover将自动被创建并且显示。通过ApplicationWindow.cover属性获取应用cover。这个属性应该被设置在组件上让cover显示在homescreen,通常还需要显示应用当前的状态。应用可以基于状态的改变更新cover,无论如何不应该在cover上显示动画。当应用转到前台运行时,cover会被自动隐藏。
        一个应用应该总是具备cover。Sailfish OS中所有运行中的的应用均可以在主界面以“Cover”的形式显示。当一个应用被移到后台运行后Cover将自动被创建并且显示。通过ApplicationWindow.cover属性获取应用cover。这个属性应该被设置在组件上让cover显示在homescreen,通常还需要显示应用当前的状态。应用可以基于状态的改变更新cover,无论如何不应该在cover上显示动画。当应用转到前台运行时,cover会被自动隐藏。
        CoverActionList用于设置cover action,一个CoverActionList能够包含最多两个CoverAction元素。
一个应用应该总是具备cover。     
官方示例:

 CoverActionList {

     enabled: mode == "music"

     CoverAction {

         iconSource: player.playing ? "pause.png" : "play.png"

         onTriggered: player.togglePlaying()

     }

     CoverAction {

         iconSource: "next.png"

         onTriggered: player.nextSong()

     }

 }


ApplicationWindow是Sailfish应用最顶层的组件。每个Sailfish应用都必须有且仅有一个ApplicationWindow组件定义在ui的root层,它是app的入口。
主要功能:
 1、管理app里的page
 2、设置app的active cover page
 3、设置app背景图片
 4、处理横竖屏切换
大多数application window 包含一个initialPage,用于指定app被打开的时候显示的page。三、ApplicationWindow是Sailfish应用最顶层的组件。每个Sailfish应用都必须有且仅有一个ApplicationWindow组件定义在ui的root层,它是app的入口。
       主要功能:
            1、管理app里的page
            2、设置app的active cover page
            3、设置app背景图片
            4、处理横竖屏切换
        大多数application window 包含一个initialPage,用于指定app被打开的时候显示的page。

        每个application window都包含一个page stack,通过访问pageStack属性,可以决定app显示的页面。page stack由page对象组成,每一个page包含了在某个时刻显示的内容。一个page能够被添加到stack,或者从stack里移除。app 正在显示的页面就是page stack最后一个被添加进的page。

        如以下代码,应用被打开的时候显示一个按钮,当按钮被点击后切换到显示AnotherPage.qml的内容.

// main.qml

 import QtQuick 1.1

 import Sailfish.Silica 1.0



 ApplicationWindow {

     initialPage: Component {

         Page {

             Button {

                 text: "Ahoy!"

                 onClicked: pageStack.push("AnotherPage.qml")

             }

         }

     }

 }

 

       每个Sailfish app都能通过cover属性定义自己的active cover,当应用在后台运行时,active cover会显示在home screen界面。

ApplicationWindow {

     initialPage: Component { MyPage {} }

     cover: Component { MyCover {} }

 }


 

        在app中开发者可以使用allowedOrientations设置是否能进行横竖屏切换。
        ApplicationWindow的属性:
            allowedOrientations : enumeration
                  • Orientation.Portrait
                  • Orientation.Landscape
                  • Orientation.PortraitInverted
                  • Orientation.LandscapeInverted
                  • Orientation.All
         applicationActive : bool
              当应用在前台运行时为true, 当应用在后台运行并且cover被显示的时候为false。

         bottomMargin : real

         contentItem : Item
              包含在application window内部的子item。

         deviceOrientation : enumeration
               改变屏幕方向,属性值同allowedOrientations的前四个类型。

         orientation : enumeration
               屏幕方向

         initialPage : variant

         pageStack : PageStack

         cover : variant

         screenRotation : real

    ApplicationWindow方法:
           ApplicationWindow::activate ()
                     让app在前台运行
           ApplicationWindow::deactivate ()
                     让app运行在后台,并且最小化app作为active cover显示在home界面上。

 

 

ApplicationWindow {

     initialPage: Component { MyPage {} }

     cover: Component { MyCover {} }

 }


 

 

 


 

 

你可能感兴趣的:(application)