单个Ubuntu SDK能否将触摸屏和台式机的布局分开?


9

我知道触摸应用程序将在具有相同UI的桌面上运行,但是我想知道单个Ubuntu SDK应用程序在以桌面模式运行时是否可能具有带有桌面样式UI元素的多窗口UI,而同时在触摸平台上运行时提供单独的触摸UI。

Answers:


6

根据窗口的大小来改变布局的方面可以通过多种方式来完成。在最基本的级别上,您可以根据尺寸将属性设置为不同的值。这是一个最小的示例,该示例绘制一个灰色正方形,如果您增大窗口,该正方形将变为橙色:

与运行 qmlscene path/to/file.qml

import QtQuick 2.0
import Ubuntu.Components 0.1

MainView {
    id: root
    width: units.gu(50)
    height: units.gu(50)

    Rectangle {
        id: hello
        color: parent.width > units.gu(60) ? UbuntuColors.orange : UbuntuColors.warmGrey
        anchors.fill: parent
    }
}

当然,如果您的应用程序具有更复杂的元素,这可能会有些乏味。为了解决这个问题,Ubuntu Toolkit提供了ConditionalLayout组件,您可以在其中定义在满足条件时将被激活的不同布局。这是动态发生的,您可以在调整窗口大小时看到更改。

这是使用的更复杂的示例ConditionalLayout

import QtQuick 2.0
import Ubuntu.Components 0.1
import Ubuntu.Components.ListItems 0.1 as ListItem
import Ubuntu.Layouts 0.1

MainView {
    id: root
    width: units.gu(50)
    height: units.gu(75)

    Page {
        anchors.fill: parent

        Layouts {
            id: layouts
            anchors.fill: parent
            layouts: [

                ConditionalLayout {
                    name: "flow"
                    when: layouts.width > units.gu(60)

                    Flow {
                        anchors.fill: parent
                        flow: Flow.LeftToRight

                        ItemLayout {
                            item: "sidebar"
                            id: sidebar
                            anchors {
                                top: parent.top
                                bottom: parent.bottom
                            }
                            width: parent.width / 3
                        }

                        ItemLayout {
                            item: "colors"
                            anchors {
                                top: parent.top
                                bottom: parent.bottom
                                right: parent.right
                                left: sidebar.right
                            }
                        }
                    }
                }
            ]

            Column {
                id: sidebar
                anchors {
                    left: parent.left
                    top: parent.top
                    right: parent.right
                }
                Layouts.item: "sidebar"

                ListItem.Header {
                    text: "Ubuntu Color Palette"
                }

                ListItem.Standard {
                    id: orangeBtn
                    text: "Ubuntu Orange"
                    control: Button {
                        text: "Click me"
                        onClicked: {
                            hello.color = UbuntuColors.orange
                        }
                    }
                }

                ListItem.Standard {
                    id: auberBtn
                    text: "Canonical Aubergine"
                    control: Button {
                        text: "Click me"
                        onClicked: {
                            hello.color = UbuntuColors.lightAubergine
                        }
                    }
                }

                ListItem.Standard {
                    id: grayBtn
                    text: "Warm Grey"
                    control: Button {
                        text: "Click me"
                        onClicked: {
                            hello.color = UbuntuColors.warmGrey
                        }
                    }
                }
            } // Column

            Rectangle {
                id: hello
                Layouts.item: "colors"
                color: UbuntuColors.warmGrey
                anchors {
                    top: sidebar.bottom
                    bottom: parent.bottom
                    left: parent.left
                    right: parent.right
                }

                Label {
                    anchors.centerIn: parent
                    text: "Hello (ConditionalLayout) World!"
                    color: "black"
                    fontSize: "large"
                }
            }
        } // Layouts
    } // Page
} // Main View

当采用默认的类似电话的尺寸时,它看起来像:

手机布局

当将其扩展到平板电脑或类似台式机的尺寸时,它看起来像:

平板电脑布局


这非常适合调整为不同的屏幕尺寸。如果应用程序在桌面上运行,是否还可以使用桌面样式的元素(如菜单栏和多个窗口)?
sjmulder

@sjmulder还没有,至少没有使用Ubuntu SDK。
iBelieve 2013年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.