mirror of https://github.com/kivy/kivy.git
Merge branch 'master' of https://github.com/kivy/kivy
This commit is contained in:
commit
cfec8f3dba
|
@ -596,15 +596,34 @@ class SwapTransition(TransitionBase):
|
|||
'''Swap transition that looks like iOS transition when a new window
|
||||
appears on the screen.
|
||||
'''
|
||||
def __init__(self, **kwargs):
|
||||
super(SwapTransition, self).__init__(**kwargs)
|
||||
self.scales = {}
|
||||
|
||||
def start(self, manager):
|
||||
for screen in self.screen_in, self.screen_out:
|
||||
with screen.canvas.before:
|
||||
PushMatrix(group='swaptransition_scale')
|
||||
scale = Scale(group='swaptransition_scale')
|
||||
with screen.canvas.after:
|
||||
PopMatrix(group='swaptransition_scale')
|
||||
|
||||
screen.bind(center=self.update_scale)
|
||||
self.scales[screen] = scale
|
||||
super(SwapTransition, self).start(manager)
|
||||
|
||||
def update_scale(self, screen, center):
|
||||
self.scales[screen].origin = center
|
||||
|
||||
def add_screen(self, screen):
|
||||
self.manager.real_add_widget(screen, 1)
|
||||
|
||||
def on_complete(self):
|
||||
self.screen_in.scale = 1.
|
||||
self.screen_out.scale = 1.
|
||||
self.screen_in.pos = self.manager.pos
|
||||
self.screen_out.pos = self.manager.pos
|
||||
for screen in self.screen_in, self.screen_out:
|
||||
for canvas in screen.canvas.before, screen.canvas.after:
|
||||
canvas.remove_group('swaptransition_scale')
|
||||
super(SwapTransition, self).on_complete()
|
||||
|
||||
def on_progress(self, progression):
|
||||
|
@ -612,8 +631,8 @@ class SwapTransition(TransitionBase):
|
|||
b = self.screen_out
|
||||
manager = self.manager
|
||||
|
||||
b.scale = 1. - progression * 0.7
|
||||
a.scale = 0.5 + progression * 0.5
|
||||
self.scales[b].xyz = [1. - progression * 0.7 for xyz in 'xyz']
|
||||
self.scales[a].xyz = [0.5 + progression * 0.5 for xyz in 'xyz']
|
||||
a.center_y = b.center_y = manager.center_y
|
||||
|
||||
al = AnimationTransition.in_out_sine
|
||||
|
|
Loading…
Reference in New Issue