ΠΠΎΡΠ°Π±ΠΎΡΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ½Π΅ Π½ΡΠΆΠ΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡ, Π³Π»ΡΠ±ΠΎΠΊΠΎ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΠΈΠΉΡΡ Π² ΡΡΠΈΠ³ΠΎΠ½ΠΎΠΌΠ΅ΡΡΠΈΠΈ, ΠΌΠ°ΡΡΠΈΡΠ°Ρ
Π°ΡΠΈΠ½Π½ΡΡ
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡΠΈΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊΠΈ ΠΆΠ΅ΡΡΠΎΠ² (MotionEvent) Π½Π° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½ΠΈΠ·ΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅. Π ΠΈΠΌΠ΅ΡΡΠ΅ΠΌΡΡ ΠΊΠΎΠ΄Π΅ https://github.com/kfvsc/ExampleBug ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΆΠ΅ΡΡΠΎΠ² pan, pinch, rotate. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΈΡ
ΠΆΠ΅ΡΡΠΎΠ², ΠΊ Π΄ΠΎΡΠ΅ΡΠ½Π΅ΠΉ view ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ. Π ΠΊΠΎΠ΄Π΅ Π΅ΡΡΡ Π±Π°Π³ (https://drive.google.com/file/d/1GVgqJJWZdGYrgDn34XZMRdfkP1Ma3W8x/view?usp=share_link): ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΡΠΎΡΠΊΠ° pivot (ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠΎΡΠΊΠ° Π΄Π»Ρ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΉ scale ΠΈ rotate) ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ
ΡΠ°ΡΡΡΠ΅ΡΠ°Ρ
(Ρ Π½Π΅ Π½ΡΠ»Π΅Π²ΡΠΌ rotate). Π ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΆΠ΅ΡΡΠΎΠ², Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΊΠ°ΡΡΡ Π² ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
: ΡΠΎΡΠΊΠ° pivot Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΡΠ°Π²Π°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΠΏΠ°Π»ΡΡΠ°ΠΌΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Π³Π΄Π΅ Π½Π°ΡΠ°Π»ΡΡ ΠΆΠ΅ΡΡ (https://drive.google.com/file/d/163VSvlTdJYWRyLn5FIcWevJwygjuyofh/view?usp=sharing). ΠΡΠΈΡΠ΅ΠΌ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΡ ΡΠ΅ΠΊΡΡΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. Π‘ΡΠ°Π·Ρ ΠΎΠ³ΠΎΠ²ΠΎΡΡΡΡ, ΡΡΠΎ Π·Π°Π΄Π°ΡΠ° Π½Π΅ ΡΠΈΠΏΠΎΠ²Π°Ρ, Π½Π° Π½Π΅ΠΉ “ΡΠ»ΠΎΠΌΠ°Π»ΠΈ Π·ΡΠ±Ρ“ ΡΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ², ΠΏΠΎΠΏΡΠΎΡΡΡ ΠΎΡΠΊΠ°Π·Π°Π²ΡΠΈΡΡ ΠΎΡ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎΡΠ»Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΠΎΠΏΡΡΠΎΠΊ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ. ΠΠΎΡΠΎΠ²ΡΡ
ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΡ
Π΄Π»Ρ Π΄ΠΎΠ½ΠΎΡΡΡΠ²Π° ΠΈΠ΄Π΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΠΊΠΎΡ Π½Π°ΠΏΠ»Π°ΠΊΠ°Π», Π΅ΡΠ»ΠΈ Π±Ρ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠ΅Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ, ΡΠΎ Ρ Π±Ρ ΡΡΠΎ ΡΠΆΠ΅ Π½Π°ΡΠ΅Π». Π‘ΡΠ΄Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ, Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π³Π»ΡΠ±ΠΎΠΊΠΈΠ΅ Π·Π½Π°Π½ΠΈΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΡΡΠΈΠ³ΠΎΠ½ΠΎΠΌΠ΅ΡΡΠΈΠΈ (Π²ΡΠ΅ ΡΠ°ΡΡΡΠ΅ΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ AffineTransform Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ) ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊΠΈ ΠΆΠ΅ΡΡΠΎΠ² (MotionEvent) Π½Π° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½ΠΈΠ·ΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ (Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ GestureRecognizer). ΠΡ Π° ΡΡΡΡ Π΄Π΅Π»Π° ΠΊΡΠΎΠ΅ΡΡΡ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° pivotContentView Π² ΠΊΠ»Π°ΡΡΠ΅ MainView - Π² ΡΠ°ΡΡΡΠ΅ΡΠ°Ρ
ΡΠΎΡΠΊΠΈ pivot. ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ ΠΎ ΡΠΏΠΎΡΠΎΠ±Π΅ ΡΠ°ΡΡΡΠ΅ΡΠ° pivot - Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°Π½ΡΠ°ΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π°: Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΊΠΎΠ»ΠΎ 20 Π»Π΅Ρ (ΠΏΡΠ°Π²Π΄Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡ Π½Π΅ Π½Π° ΡΡΠΎΠ½ΡΠ΅ ΠΈ Π½Π΅ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅) ΠΈ Π·Π° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Ρ Π½Π΅ Π΄ΠΎΠ³Π°Π΄Π°Π»ΡΡ. Π’ΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°Π΄ΠΎ Π·Π½Π°ΡΡ ΡΡΠΎ ΠΈ ΠΊΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ, Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΠΎΠΏΡΡ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ
Π²Π΅ΡΠ΅ΠΉ. ΠΠΎ ΡΡΠΎΠΌΡ ΠΏΡΠΎΡΡ ΠΎΡΠΊΠ»ΠΈΠΊΠ½ΡΡΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ Π² ΡΠΈΠ»Π°Ρ
ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π»ΡΡ ΡΡ
ΠΎΠΆΠΈΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ. Π― ΠΆΠ΄Ρ ΠΎΡ Π²Π°Ρ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΠΈΠ»Π°Ρ
, Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΠ½Π΅ Π½Π΅ Π½ΡΠΆΠ½Π° ΡΡΠ°ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΏΠΎΠΏΡΡΠΊΠΈ, ΠΌΠ½Π΅ Π½ΡΠΆΠ΅Π½ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΠ° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΏΠ»ΠΎΡΠ°Π΄ΠΊΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Ρ, Π΄Π΅Π½ΡΠ³ΠΈ ΠΌΠΎΡΠ΅Π½Π½ΠΈΠΊΠ°ΠΌ Π½Π΅ ΡΠ°ΡΡΡΠ»Π°Ρ. ΠΡ Π²Π°Ρ ΠΆΠ΄Ρ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²ΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΡΠΌΠΌΡ.