見出し画像

Pythonで推し鑑賞スマホアプリを作る2 時計アプリになった

前回、とりあえずスリープ禁止で推しの画像をずーっと表示するアプリを作りました。

さすがにそれだけだとつまらないので、アニメーションをつけたりしようと思います。


まばたき

まずはまばたき。
目を閉じた画像を用意して、画像を切り替えることでまたばきを実現します。
以下のメソッドを追加。

def do_blink(self, dt):
     self.ids.himari_image.source = "image/blink.png"
     Clock.schedule_once(lambda dt: setattr(self.ids.himari_image, 'source', 'image/normal.png'), 0.1)  # 0.1秒後に戻す

以下のように__init__からコールすると、5秒毎にまばたきします。
より自然にするため、最終的にはメソッド自体は1秒間隔でコールして、ランダムでまばたきするタイミングをずらしています。

Clock.schedule_interval(self.do_blink, 5)  # 5秒ごとに瞬き

ImageにIDを指定するので、kvファイルに、
id: himari_image
を追加する。

<MyRoot>:
orientation: 'vertical'
Image:
    id: himari_image  # ← これ追加!
    allow_stretch: True
    keep_ratio: True
    source: "image/normal.png"
    size: self.parent.size
    pos: self.parent.pos

横モード

作っているうちに、横のほうがいいなぁ、と思い始めたので、横で起動するように設定を変更する。
buildozer.spec のorientationをlandscapeに変更する。
デフォルトは、portrait。

ここを変えると縦か横かを設定できる

全画面表示


ついでに全画面にしようと思うので、buildozer.spec のfullscreenを1に設定する。
画像もサイズ変更したものを作り直す。
フルスクリーンにすると、起動時にフガフガするけど、大きくみたいので今回は目をつぶる。
起動時だけだし。
自分のスマホが古いからか(android 8)、buildozerだとそういうものなのかは不明。

全画面の挙動は android OSにも依存するらしい

時計

推しだけでもいいけど、ずーっと表示しているなら時計くらいあってもいいかなぁと思って時計を表示する。
メソッドのコールは1秒間隔。
下の備考にも書いてありますが、時間、コロン、分を1つの文字列にまとめて楽に表示することもできますが、それだと微妙にコロンの位置が下にずれて気になるので、あえて分割して表示。

"""
 機能:時計表示
 備考:まとめるとコロンの位置が微妙に低いのであえて分割
"""
def update_time(self, dt):
    
    # 時間
    self.ids.clock_label1.text = datetime.now().strftime("%H")
    
    # コロンの点滅
    if self.lastclock == 0:
        self.ids.clock_label2.text = ":"
        self.lastclock = 1
    else:
        self.ids.clock_label2.text = ""
        self.lastclock = 0

    # 分
    self.ids.clock_label3.text = datetime.now().strftime("%M")

kvファイルにもラベル定義を追加する。
同じようなのを3つ分。x座標だけずらす。
PC表示と実際のスマホの表示が微妙に異なるので、実機でも確認しながら調整します。

Label:
    id: clock_label1
    font_size: dp(100)
    pos_hint: {"center_x": 0.15, "center_y": 0.5}
    color: 0.3, 0.3, 0.3, 1
    text: ""
    size_hint: None, None
    size: self.texture_size

この時点でこんな感じ

推し鑑賞というよりすっかり推し時計アプリみたいになりました。

コロンの点滅とたまに推しがまばたきするくらいのアニメーション。
コロンもちょい上でもいいかな…

時計を表示させることで実用性も出ましたが、もうちょっといろいろ表示させたいなぁ。
背景が何もないのもさみしいのかも。
続きます。

いいなと思ったら応援しよう!

この記事が参加している募集