Kivy自动调整(自动调整)图像到屏幕

时间:2014-05-01 03:18:15

标签: image screen kivy autoresize normalize

我们正在开发一个kivy移动应用程序,它使用图像作为屏幕顶部的横幅(屏幕的其余部分由GridLayout中的按钮和文本组成)。目前,我们已经能够使用“size_hint”来确保每个孩子都适合我的三星S4。但是,每当我们在Kivy窗口(或任何其他手机)上运行应用程序时,横幅都不能正确适合屏幕。我们怎样才能解决这个问题呢?我们尝试过使用“allow_stretch”和“keep_ratio”,虽然它们有效但却不适当地缩放图像。我们的假设是我们应该使用“norm_image_size”,但是找不到任何如何使用它的示例,以便横幅在所有屏幕上正确标准化。

“norm_image_size”是否是在此实例中使用的正确方法? 如果是这样,有人能指出我们如何正确使用它的例子吗?

由于

以下是我们的kv文件中的代码。正如我上面所说,我可以在BoxLayout的每个子节点中使用“size_hint”使它们在我的手机上正确缩放,但是在我的Mac上的Kivy窗口中,这种缩放不适用。

Screen:
    name: 'screen1'
    FloatLayout:
        canvas.before:
            Color:
                rgba: 1, 1, 1, 1
            Rectangle:
                pos: self.pos
                size: self.size
    AnchorLayout:               
        anchor_y: 'top'
        anchor_x: 'center'
        BoxLayout:
            orientation: 'vertical'
            size: self.width, self.height
            GridLayout:
                canvas:
                    Rectangle:
                        source: 'img/banner1.png'
                        size: self.size
                        pos: self.pos
                cols: 5
                spacing: '20dp'
                padding: '12dp'
                row_default_height: '50dp'
                row_force_default: True
                size_hint: (1.0,.1)
                Image:
                    source: 'img/logo1.png'
                Image:
                Image:
                Image:
                Image:
            GridLayout:
                row_default_height: '80dp'
                row_force_default: True
                cols: 5
                spacing: '5dp'
                padding: '10dp'
                size_hint: (1,.7)
                Button:
                    id: square1
                Button:
                    id: square2
                Button:
                    id: square3
                    text: 
                Button:
                    id: square4
                    text: 
                Button:
                    id: square5
                    text:
                Button:
                    id: square6
                    text: 
                Button:
                    id: square7
                    text: 
                Button:
                    id: square8
                    text: 
                Button:
                    id: square9
                    text:
                Button:
                    id: square10
                Button:
                    id: square11
                Button:
                    id: square12
                    text: 
                Button:
                    id: square13
                Button:
                    id: square14
                    text:
                Button:
                    id: square15
                    text: 
                Button:
                    id: square16
                    text: 
                Button:
                    id: square17
                    text: 
                Button:
                    id: square18
                    text:
                Button:
                    id: square19
                    text:
                Button:
                    id: square20
                    text:
            GridLayout:
                row_default_height: '50dp'
                row_force_default: True
                cols: 1
                size_hint: (1,.07)
                canvas.before:
                    Color:
                        rgb: 1,1,1
                    Rectangle:
                        pos: self.pos
                        size: self.size
                Button:
                    size_hint_y: None
                    text: 'Return Home'
                    font_size: '12sp'
                    font_name: 'fonts/text1.ttf'
                    background_normal: 'img/return_home4.png'
                    background_down: 'img/return_home4.png'
                    border: 20,20,20,20
                    on_press: root.current = 'home'

0 个答案:

没有答案