Kivy:调暗 Android 导航按钮

Kivy: dimming Android navigation buttons

我想调暗 Kivy 应用程序中的导航按钮。 Java 中的操作方法在此处描述:https://developer.android.com/training/system-ui/dim.html 但是我无法弄清楚如何使用 pyjnuis 或其他东西在 Kivy 中做到这一点。 有人以前做过吗?

谢谢

是的,您可以通过 pyjnius 执行此操作。唯一需要注意的是,您不能从 UI 线程之外修改 Android UI 组件。

首先,您将使用 pyjnius 导入 Java 类:

from jnius import autoclass
PythonActivity = autoclass('org.renpy.android.PythonActivity')
View = autoclass('android.view.View')

然后可以修改系统UI(仅从UI线程):

PythonActivity.mActivity.getWindow().getDecorView()
    .setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE)

这是一个完整的例子:

import kivy
kivy.require('1.8.0')

from kivy.app import App
from kivy.lang import Builder

from jnius import autoclass
PythonActivity = autoclass('org.renpy.android.PythonActivity')
View = autoclass('android.view.View')

from android.runnable import run_on_ui_thread

root = Builder.load_string('''
BoxLayout:
    orientation: 'vertical'
    Button:
        text: 'Dim'
        on_press: app.dim()
    Button:
        text: 'Undim'
        on_press: app.undim()
''')

class DimTestApp(App):
    def build(self):
        return root

    @run_on_ui_thread
    def set_systemui_visibility(self, options):
        PythonActivity.mActivity.getWindow().getDecorView().setSystemUiVisibility(options)

    def dim(self, *args):
        self.set_systemui_visibility(View.SYSTEM_UI_FLAG_LOW_PROFILE)

    def undim(self, *args):
        self.set_systemui_visibility(0)

if __name__ == '__main__':
    DimTestApp().run()

You can download a test APK if you'd like(link 有效期至 2015-04-09)。