Develop Android software with Python

desperate

Kivy is an open source Python framework (2011), used for rapid development of applications, to achieve a variety of popular user interfaces, such as multi-touch and so on. Kivy can run on most of the current mainstream desktop/mobile operating systems such as Windows, Linux, MacOS, Android, and iOS. Kivy is based on Python, and the interface UI file and program file are separated from each other. The design is simple and elegant, and the syntax is easy to learn. It is suitable for beginners. At present, Kivy's official documentation is fairly complete.

first application

main.py:

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import (
    NumericProperty, ReferenceListProperty, ObjectProperty
)
from kivy.vector import Vector
from kivy.clock import Clock


class PongPaddle(Widget):
    score = NumericProperty(0)

    def bounce_ball(self, ball):
        if self.collide_widget(ball):
            vx, vy = ball.velocity
            offset = (ball.center_y - self.center_y) / (self.height / 2)
            bounced = Vector(-1 * vx, vy)
            vel = bounced * 1.1
            ball.velocity = vel.x, vel.y + offset


class PongBall(Widget):
    velocity_x = NumericProperty(0)
    velocity_y = NumericProperty(0)
    velocity = ReferenceListProperty(velocity_x, velocity_y)

    def move(self):
        self.pos = Vector(*self.velocity) + self.pos


class PongGame(Widget):
    ball = ObjectProperty(None)
    player1 = ObjectProperty(None)
    player2 = ObjectProperty(None)

    def serve_ball(self, vel=(4, 0)):
        self.ball.center = self.center
        self.ball.velocity = vel

    def update(self, dt):
        self.ball.move()

        # bounce of paddles
        self.player1.bounce_ball(self.ball)
        self.player2.bounce_ball(self.ball)

        # bounce ball off bottom or top
        if (self.ball.y < self.y) or (self.ball.top > self.top):
            self.ball.velocity_y *= -1

        # went of to a side to score point?
        if self.ball.x < self.x:
            self.player2.score += 1
            self.serve_ball(vel=(4, 0))
        if self.ball.right > self.width:
            self.player1.score += 1
            self.serve_ball(vel=(-4, 0))

    def on_touch_move(self, touch):
        if touch.x < self.width / 3:
            self.player1.center_y = touch.y
        if touch.x > self.width - self.width / 3:
            self.player2.center_y = touch.y


class PongApp(App):
    def build(self):
        game = PongGame()
        game.serve_ball()
        Clock.schedule_interval(game.update, 1.0 / 60.0)
        return game


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

pong.kv:

#:kivy 1.0.9

<PongBall>:
    size: 50, 50 
    canvas:
        Ellipse:
            pos: self.pos
            size: self.size          

<PongPaddle>:
    size: 25, 200
    canvas:
        Rectangle:
            pos: self.pos
            size: self.size

<PongGame>:
    ball: pong_ball
    player1: player_left
    player2: player_right
    
    canvas:
        Rectangle:
            pos: self.center_x - 5, 0
            size: 10, self.height
    
    Label:
        font_size: 70  
        center_x: root.width / 4
        top: root.top - 50
        text: str(root.player1.score)
        
    Label:
        font_size: 70  
        center_x: root.width * 3 / 4
        top: root.top - 50
        text: str(root.player2.score)
    
    PongBall:
        id: pong_ball
        center: self.parent.center
        
    PongPaddle:
        id: player_left
        x: root.x
        center_y: root.center_y
        
    PongPaddle:
        id: player_right
        x: root.width - self.width
        center_y: root.center_y

Package apk file

python+buildozer+kivy package apk file - Programmer Sought

GitHub - kivy/python-for-android: Turn your Python application into an Android APK

beeware

Written in Python, runs everywhere.

BeeWare is a collection of tools and libraries that each work together to help you write cross-platform native GUI Python applications. it includes:

  • Toga, a cross-platform widget toolkit;
  • Briefcase, a tool for packaging Python projects as distributable artifacts that can be sent to end users;
  • Libraries (like Rubicon ObjC) for accessing platform-native libraries;
  • A precompiled version of Python, available for platforms where the official Python installer is not available.

You can use each tool individually or use them all as a set.

The complete BeeWare suite also includes software development tools and applications written using BeeWare's own libraries.

BeeWare suites are available for mobile platforms such as macOS, Windows, Linux (using GTK), Android, and iOS, as well as the Web. Other platforms (such as set-top boxes and watches) are also supported in our long-term roadmap.

References:

https://blog.csdn.net/ZNJIAYOUYA/article/details/126553693

Tutorial 1 - Your first app - BeeWare Tutorial

https://github.com/beeware/briefcase

Guess you like

Origin blog.csdn.net/m0_61634551/article/details/130774506