Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit06cdf9a

Browse files
imageview: click image for fullscreen
1 parent7ef6ca2 commit06cdf9a

File tree

2 files changed

+53
-17
lines changed

2 files changed

+53
-17
lines changed

‎internal_filesystem/apps/com.micropythonos.imageview/assets/imageview.py‎

Lines changed: 50 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
frommpos.appsimportActivity
55
importmpos.ui
6+
importmpos.ui.anim
67

78
classImageView(Activity):
89

@@ -15,32 +16,35 @@ class ImageView(Activity):
1516
image_nr=None
1617
image_timer=None
1718
image=None
19+
fullscreen=False
1820

1921
defonCreate(self):
2022
screen=lv.obj()
2123
self.image=lv.image(screen)
22-
self.image.set_size(128,128)
2324
self.image.center()
25+
self.image.add_flag(lv.obj.FLAG.CLICKABLE)
26+
#self.image.add_event_cb(self.print_events, lv.EVENT.ALL, None)
27+
self.image.add_event_cb(lambdae:self.play(),lv.EVENT.CLICKED,None)
2428
self.label=lv.label(screen)
25-
self.label.set_text('Hello Images!')
29+
self.label.set_text('Loading images from\n{self.imagedir}')
2630
self.label.align(lv.ALIGN.TOP_MID,0,0)
2731
self.prev_button=lv.button(screen)
2832
self.prev_button.align(lv.ALIGN.BOTTOM_LEFT,0,0)
2933
self.prev_button.add_event_cb(lambdae:self.show_prev_image(),lv.EVENT.CLICKED,None)
3034
prev_label=lv.label(self.prev_button)
3135
prev_label.set_text(lv.SYMBOL.LEFT)
32-
self.play_button=lv.button(screen)
33-
self.play_button.align(lv.ALIGN.BOTTOM_MID,0,0)
34-
self.play_button.add_event_cb(lambdae:self.play(),lv.EVENT.CLICKED,None)
35-
play_label=lv.label(self.play_button)
36-
play_label.set_text(lv.SYMBOL.PLAY)
36+
#self.play_button = lv.button(screen)
37+
#self.play_button.align(lv.ALIGN.BOTTOM_MID,0,0)
38+
#self.play_button.add_event_cb(lambda e: self.play(),lv.EVENT.CLICKED,None)
39+
#play_label = lv.label(self.play_button)
40+
#play_label.set_text(lv.SYMBOL.PLAY)
3741
self.next_button=lv.button(screen)
3842
self.next_button.align(lv.ALIGN.BOTTOM_RIGHT,0,0)
3943
self.next_button.add_event_cb(lambdae:self.show_next_image(),lv.EVENT.CLICKED,None)
40-
#self.next_button.add_event_cb(self.touch_cb, lv.EVENT.ALL, None)
44+
self.next_button.add_event_cb(self.print_events,lv.EVENT.ALL,None)
4145
next_label=lv.label(self.next_button)
4246
next_label.set_text(lv.SYMBOL.RIGHT)
43-
#screen.add_event_cb(self.touch_cb, lv.EVENT.ALL, None)
47+
#screen.add_event_cb(self.print_events, lv.EVENT.ALL, None)
4448
self.setContentView(screen)
4549

4650
defonResume(self,screen):
@@ -64,7 +68,7 @@ def onStop(self, screen):
6468
print("ImageView: deleting image_timer")
6569
self.image_timer.delete()
6670

67-
deftouch_cb(self,event):
71+
defprint_events(self,event):
6872
globalcanvas
6973
event_code=event.get_code()
7074
#print(f"got event {event_code}")
@@ -99,6 +103,21 @@ def show_prev_image(self, event=None):
99103

100104
defplay(self,event=None):
101105
print("playing...")
106+
ifself.fullscreen:
107+
print("stopping fullscreen")
108+
self.fullscreen=False
109+
mpos.ui.anim.smooth_show(self.label)
110+
mpos.ui.anim.smooth_show(self.prev_button)
111+
#mpos.ui.anim.smooth_show(self.play_button)
112+
mpos.ui.anim.smooth_show(self.next_button)
113+
else:
114+
print("starting fullscreen")
115+
self.fullscreen=True
116+
mpos.ui.anim.smooth_hide(self.label)
117+
mpos.ui.anim.smooth_hide(self.prev_button)
118+
#mpos.ui.anim.smooth_hide(self.play_button)
119+
mpos.ui.anim.smooth_hide(self.next_button)
120+
self.scale_image()
102121

103122
defshow_next_image(self,event=None):
104123
print("showing next image...")
@@ -116,12 +135,26 @@ def show_image(self, name):
116135
try:
117136
self.label.set_text(name)
118137
self.image.set_src(f"M:{name}")
119-
print(f"the LVGL image has size:{self.image.get_width()}x{self.image.get_height()}")
120-
header=lv.image_header_t()
121-
self.image.decoder_get_info(self.image.get_src(),header)
122-
print(f"the real image has size:{header.w}x{header.h}")
123-
#image.set_size(128, 128)
124-
#self.image.set_scale(512)
125-
print(f"after set_scale, the LVGL image has size:{self.image.get_width()}x{self.image.get_height()}")
138+
self.scale_image()
126139
exceptExceptionase:
127140
print(f"show_image got exception:{e}")
141+
142+
defscale_image(self):
143+
ifself.fullscreen:
144+
pct=100
145+
else:
146+
pct=90
147+
lvgl_w=mpos.ui.pct_of_display_width(pct)
148+
lvgl_h=mpos.ui.pct_of_display_height(pct)
149+
print(f"scaling to size:{lvgl_w}x{lvgl_h}")
150+
header=lv.image_header_t()
151+
self.image.decoder_get_info(self.image.get_src(),header)
152+
image_w=header.w
153+
image_h=header.h
154+
print(f"the real image has size:{header.w}x{header.h}")
155+
scale_factor_w=round(lvgl_w*256/image_w)
156+
scale_factor_h=round(lvgl_h*256/image_h)
157+
print(f"scale_factors:{scale_factor_w},{scale_factor_h}")
158+
self.image.set_size(lvgl_w,lvgl_h)
159+
self.image.set_scale(max(scale_factor_w,scale_factor_h))
160+
print(f"after set_scale, the LVGL image has size:{self.image.get_width()}x{self.image.get_height()}")

‎internal_filesystem/lib/mpos/ui/__init__.py‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -632,6 +632,9 @@ def handle_top_swipe():
632632
defpct_of_display_width(percent):
633633
returnround(horizontal_resolution*percent/100)
634634

635+
defpct_of_display_height(percent):
636+
returnround(vertical_resolution*percent/100)
637+
635638
defmin_resolution():
636639
returnmin(mpos.ui.horizontal_resolution,mpos.ui.vertical_resolution)
637640

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp