package Ġme . s het j . constraint layout . demo Ċ Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . os . Bundle Ċ import Ġkotlinx . android . synt hetic . main . activity _ layer .* Ċ import Ġme . s het j . base . base . Base Activity Ċ import Ġme . s het j . constraint layout . Constr ain Layout Presenter Ċ import Ġme . s het j . constraint layout . R Ċ Ċ class ĠLayer Activity Ġ: ĠBase Activity < Constr ain Layout Presenter >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ layer ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Animation () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġend Animation () Ġ{ ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġbtn _ change . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim Ġ= ĠValue Animator . of Float ( 0 f , Ġ 3 6 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim . duration Ġ= Ġ 3 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim . add Update Listener Ġ{ Ġanimation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġangle Ġ= Ġanimation . animated Value Ġas ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayer . rotation Ġ= Ġangle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĶ¾ å¤§ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayer . scale X Ġ= Ġ 1 Ġ+ Ġ( 1 8 0 Ġ- ĠMath . abs ( angle Ġ- Ġ 1 8 0 )) Ġ/ Ġ 2 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayer . scale Y Ġ= Ġ 1 Ġ+ Ġ( 1 8 0 Ġ- ĠMath . abs ( angle Ġ- Ġ 1 8 0 )) Ġ/ Ġ 2 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġshift _ x Ġ= Ġ 5 0 0 Ġ* ĠMath . sin ( Math . to Radians (( angle Ġ* Ġ 5 ). toDouble ())). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġshift _ y Ġ= Ġ 5 0 0 Ġ* ĠMath . sin ( Math . to Radians (( angle Ġ* Ġ 7 ). toDouble ())). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç§»åĬ¨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayer . translation X Ġ= Ġshift _ x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayer . translation Y Ġ= Ġshift _ y ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĢļè¿ĩ ç§»åĬ¨ åĴĮ æĶ¾ å¤§ ï¼Į è®© çĶ¨æĪ· æĦŁ è§ī æİ¥ è¿ĳ äºĨ çĶ» éĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim . duration Ġ= Ġ 4 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit View () Ġ{ ĊĠĠĠ Ġ} Ċ } Ċ