{"id":196912,"date":"2013-10-09T12:24:03","date_gmt":"2013-10-09T08:24:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=196912"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=196912","title":{"rendered":"<span class=\"post_title\">SlideStackView \u0438\u043b\u0438 Extending ViewGroup \u0432 Android (\u0447\u0430\u0441\u0442\u044c 2)<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043e \u0441\u0432\u043e\u0451\u043c \u043e\u043f\u044b\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 SlideStackView \u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u0435 Mail.Ru \u043f\u043e\u0434 Android. \u0422\u043e\u0433\u0434\u0430 \u044f \u043f\u043e\u043e\u0431\u0435\u0449\u0430\u043b, \u0447\u0442\u043e \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u044e \u0432\u0442\u043e\u0440\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u0432 <br \/>  \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u0447\u0430\u0441\u0442\u044c. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0451\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 <br \/>  \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 \u043e\u0431 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438. \u0412\u0441\u0435 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u044b\u043c \u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e <br \/>  \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0432\u0430\u0448\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Touch screen.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b \u2014 SlideStackView, \u2014 \u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u044f\u0442 \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u043c\u0435\u0436\u0434\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0447\u0430\u0441\u0442\u044f\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 <br \/>  \u043f\u043e\u0447\u0442\u0435 Mail.Ru \u044d\u0442\u043e \u0442\u0440\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430: \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u043f\u043e\u043a \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430 \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0438\u0441\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 <br \/>  \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438.<\/p>\n<p>  \u041a\u0430\u043a \u044f \u043f\u0438\u0441\u0430\u043b \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u0432\u0441\u0451 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c \u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043b\u0430\u0439\u0434\u044b. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u0438 \u0441\u043b\u0430\u0439\u0434\u044b \u0430\u043d\u0438\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>  \u042f \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0440\u0435\u0448\u0430\u0435\u043c\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0441 \u044d\u0442\u0438\u043c \u0438 \u0438\u043c\u0435\u044e\u0442 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 MotionEvent\u2019\u043e\u0432 \u0432 <br \/>  Android Framework, \u043d\u043e, \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043d\u0430\u0447\u043d\u0443 \u044f \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 View \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 MotionEvent\u2019\u043e\u0432. \u0418 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432\u0438\u0434\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 <br \/>  \u0441\u0430\u043c\u044b\u0439 MotionEvent, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u0440\u0430\u043d\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0432\u0441\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 TouchScreen\u2019\u043e\u043c.<\/p>\n<p>  \u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 event\u2019\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433 \u0441\u043b\u0430\u0439\u0434\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0430. <\/p>\n<p>  \u041d\u043e \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u043a\u043e\u0434\u0430, \u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u044f \u0432 \u043a\u0443\u0447\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u043b\u044f \u0441\u0435\u0431\u044f <br \/>  \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0442\u043e\u0447\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0438 \u043e\u0434\u043d\u0430 \u0434\u0435\u0442\u0430\u043b\u044c \u043d\u0435 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0435. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0447\u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u0432\u0441\u0435 \u043c\u0435\u043b\u043e\u0447\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0438 \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 <br \/>  \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0438\u0434\u0435\u0439 \u0432 \u043f\u043e\u043b\u044c\u0437\u0443 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b, \u0438\u043b\u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0441\u0440\u043e\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041d\u043e, \u043a\u0430\u043a \u044f \u0434\u0430\u0432\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0441 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u043c\u0438 <br \/>  \u043f\u043e\u0442\u0435\u0440\u044f\u043c\u0438, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u044f\u0434\u0435\u0448\u044c, \u043f\u043e\u0440\u0438\u0441\u0443\u0435\u0448\u044c \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u044b, \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0440\u0430\u0437\u043e\u0431\u044c\u0451\u0448\u044c \u043e\u0434\u0438\u043d \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0438\u0439 \u043a\u043b\u0430\u0441\u0441 \u043d\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 <br \/>  \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u043d\u0435 \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0432 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043e \u043c\u0435\u0440\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432, \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u0434\u0451\u0442 \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439 \u043d\u0430 <br \/>  \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u043d\u0442\u0443\u0438\u0446\u0438\u0438, \u0438 \u0432\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u0442\u0435 \u0445\u0432\u0430\u0442\u0430\u0442\u044c\u0441\u044f \u0437\u0430 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0438 \u043c\u044b\u0441\u043b\u0438, \u0447\u0442\u043e \u0434\u043b\u044f \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043b\u043e\u043f\u0430\u0442\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043c\u0435\u0441\u044f\u0446 <br \/>  \u043a\u043e\u0434. \u0417\u0434\u0435\u0441\u044c \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043b\u0430\u043d \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0435 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u0430:  <\/p>\n<ul>\n<li>\u041d\u0435 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0439 \u043a\u043b\u0430\u0441\u0441 \u043b\u0438\u0448\u043d\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c<\/li>\n<li>\u0412\u0441\u0435\u0433\u0434\u0430 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438 \u0441\u0432\u043e\u0439 \u043a\u043e\u0434, \u043a\u043e\u0433\u0434\u0430 \u0442\u0435\u0431\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u044d\u0442\u0430 \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f<\/li>\n<li>\u041d\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0439 \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/li>\n<li>\u041a\u0430\u0436\u0434\u043e\u0435 \u043f\u043e\u043b\u0435 \u0438\u043b\u0438 \u043c\u0435\u0442\u043e\u0434 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0434\u043e\u0443\u043c\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0432\u0437\u0433\u043b\u044f\u0434\u0435 \u043d\u0430 \u043d\u0438\u0445 \u0432 \u043e\u0442\u0440\u044b\u0432\u0435 \u043e\u0442 \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430<\/li>\n<\/ul>\n<p>  \u0421 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u043f\u0443\u043d\u043a\u0442\u043e\u043c, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0432 \u043f\u043e\u0440\u044b\u0432\u0435 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u0438\u0434\u0443\u0442 \u043d\u0430 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441, \u0438 \u043d\u0435\u0440\u0435\u0434\u043a\u043e \u0441\u043a\u043b\u043e\u043d\u044f\u044e\u0442\u0441\u044f \u043a <br \/>  \u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u00ab\u043b\u0438\u0448\u044c \u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e\u00bb \u0441\u0435\u0439\u0447\u0430\u0441 \u0441 \u0437\u0430\u043c\u0435\u0442\u043a\u043e\u0439 \u00ab\u043f\u043e\u043c\u0435\u043d\u044f\u044e \u043f\u043e\u0442\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u0440\u0435\u043c\u044f\u00bb. \u042f \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044e, \u0447\u0442\u043e \u044d\u0442\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u044f \u043b\u0438\u0448\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0435\u0440\u0435\u0447\u044c, <br \/>  \u0447\u0442\u043e, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u044b \u043e\u0431 \u044d\u0442\u043e\u043c \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u043f\u043e\u0442\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u0443\u0436\u0435 \u043c\u0435\u043d\u044f\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0441\u0442\u0430\u043d\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u043e\u0437\u0434\u043d\u043e \u0438\u043b\u0438 \u0435\u0449\u0451 \u0445\u0443\u0436\u0435 \u2014 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>  \u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0441\u0447\u0438\u0442\u0430\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u044d\u0442\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432\u044b\u0439 \u043f\u0440\u0438\u0437\u044b\u0432. \u0414\u0435\u043b\u0430\u0439\u0442\u0435 \u0432\u0441\u0451 \u0432\u044b\u0448\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0431\u0435\u0437 \u0444\u0430\u043d\u0430\u0442\u0438\u0437\u043c\u0430. \u0422\u043e \u0435\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434 \u0432\u0430\u043c\u0438 <br \/>  \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u044d\u043a\u0440\u0430\u043d\u0430\u043c\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0438 \u0432 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u0445 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <br \/>  \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e \u043f\u0440\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 Touch Screen, \u0442\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u0434\u043e\u0431\u044c\u0451\u0442\u0435\u0441\u044c \u044d\u0442\u043e\u0433\u043e, \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0430\u043a\u0438\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b, \u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0435\u043d\u0441\u043e\u0440\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u0411\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, <br \/>  \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e \u043f\u0443\u0442\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430 \u0438\u043b\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u043c \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u0442\u043e, \u0438 \u0434\u0430\u0436\u0435 \u0443\u0434\u043e\u0431\u043d\u043e, \u043d\u043e \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u044d\u0442\u043e \u043d\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430, \u0438 \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c, \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c <br \/>  \u00ab\u0434\u043e \u043b\u0443\u0447\u0448\u0438\u0445 \u0432\u0440\u0435\u043c\u0435\u043d\u00bb.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u043d\u0430\u0448\u0438\u043c \u0431\u0430\u0440\u0430\u043d\u0430\u043c. <\/p>\n<p>  \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0432\u0441\u0451 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u043d\u043e \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0440\u0430\u043d\u044c\u0448\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433, \u0442\u043e \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 <br \/>  MotionEvent\u2019\u043e\u0432 \u043d\u0435 \u0442\u0430\u043a-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0420\u0435\u0448\u0438\u043b \u043b\u0438 \u043e\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044c \u0441\u043b\u0430\u0439\u0434 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443, \u0438\u043b\u0438 \u043e\u043d \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f <br \/>  \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043f\u0438\u0441\u043a\u0430, \u0438 \u0442.\u0434. \u0412\u0441\u044f \u044d\u0442\u0430 \u043b\u043e\u0433\u0438\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043a\u0430\u043a \u0431\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442 \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u044e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433\u0430 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 <br \/>  \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 SlideStackScroller.<\/p>\n<pre><code class=\"html\">public static class SlideScroller extends Scroller implements OnTouchListener{     private final ScrollingListener mListener; private final GestureDetector mGestureDetector; public SlideScroller(Context context, ScrollingListener listener,  OnGestureListener gestureListener) { super(context); this.mListener = listener; this.mGestureDetector = new GestureDetector(context, gestureListener); mGestureDetector.setIsLongpressEnabled(false); } }<\/code><\/pre>\n<p>  \u0421\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u043d\u043e\u0432\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0434\u043b\u044f \u043d\u0430\u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043a\u043b\u0430\u0441\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0447\u044c. \u0410 \u0438\u043c\u0435\u043d\u043d\u043e Scroller \u0438 GestureDetector. \u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 <br \/>  \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0451\u0442\u0430 \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433\u0430, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0436\u0435\u0441\u0442\u043e\u0432, \u043d\u0430\u0441 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0436\u0435\u0441\u0442 fling. \u041f\u043e\u043c\u0438\u043c\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e <br \/>  \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f (\u043b\u0435\u043d\u0438\u0432\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u043c\u0435\u043d\u044f \u043f\u043e\u0439\u043c\u0443\u0442) \u2014 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u0443 \u043b\u043e\u0433\u0438\u043a\u0443 \u0441\u0430\u043c\u043e\u043c\u0443, \u2014 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 <br \/>  \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439, \u043b\u0435\u0433\u0447\u0435 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e consistent user experience, \u0438\u043b\u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u0441\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 <br \/>  \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u0410 \u044d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0435 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u044b. <\/p>\n<p>  \u0421\u043a\u0440\u043e\u043b\u043b\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0443 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0430\u0442\u044c \u043e \u0432\u0430\u0436\u043d\u044b\u0445, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0430, \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<pre><code class=\"html\">public interface ScrollingListener { void onScroll(int distance); void onStarted(); void onFinished(); void onJustify(); }<\/code><\/pre>\n<p>  \u041e \u0442\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u0441\u044f \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433, \u043a\u043e\u0433\u0434\u0430 \u0441\u043b\u0430\u0439\u0434 \u0441\u0434\u0432\u0438\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u0447\u0442\u043e \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f \u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u0430\u0439\u0434\u0430, \u0438 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e <br \/>  \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f. <\/p>\n<p>  \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0449\u0435, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432\u0441\u0435\u0445 \u0442\u0430\u0447 event\u043e\u0432 \u0441\u043a\u0440\u043e\u043b\u043b\u0435\u0440\u0443, \u0430 \u043e\u043d \u0443\u0436 \u0442\u0430\u043c \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e, \u0438 <br \/>  \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u043a\u043e\u043b\u0431\u044d\u043a.<\/p>\n<p>  \u041a\u0430\u043a \u0432\u044b, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0432\u0441\u0451 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043e\u0434 onTouch(View v, MotionEvent event) \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 android.view.View.OnTouchListener.<\/p>\n<pre><code class=\"html\">@Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN:{  int pointerId = MotionEventCompat.findPointerIndex(event, mActivePointerId); if (pointerId == INVALID_POINTER_ID){ break; } mLastTouchX = MotionEventCompat.getX(event, pointerId); mJustifying = false; forceFinished(true); clearMessages(); break; } case MotionEvent.ACTION_MOVE:{  int pointerId = MotionEventCompat.findPointerIndex(event, mActivePointerId); if (pointerId == INVALID_POINTER_ID){ break; } \/\/ perform scrolling float x = MotionEventCompat.getX(event, pointerId);  int distanceX = (int)(x - mLastTouchX); if (distanceX != 0) { mTouchScrolling = true; startScrolling(); mListener.onScroll(-distanceX); mLastTouchX = x; } break; } case MotionEvent.ACTION_UP: mTouchScrolling = false; mActivePointerId = INVALID_POINTER_ID; break; } if ((!mGestureDetector.onTouchEvent(event)  || ((SlideStackView)v).isOverScrolled()) && (event.getAction() == MotionEvent.ACTION_UP  || event.getAction() == MotionEvent.ACTION_CANCEL)){ justify(); } return true; }<\/code><\/pre>\n<p>  \u0418\u0434\u0451\u043c \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443: <\/p>\n<ul>\n<li>ACTION_DOWN \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043d\u0430\u043c \u043e \u0442\u043e\u043c, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043a\u043e\u0441\u043d\u0443\u043b\u0441\u044f \u044d\u043a\u0440\u0430\u043d\u0430 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u043f\u043e\u043b\u043d\u0435 <br \/>  \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0447\u0432\u0443 \u0438 \u0431\u044b\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438 \u043a \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e \u044d\u043a\u0440\u0430\u043d\u0443, \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0438 \u0431\u0443\u0434\u0435\u043c <br \/>  \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u0442\u044c \u043d\u0430\u0448 \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0438 \u0441\u0431\u0440\u043e\u0441 \u0432\u0441\u0435\u0445 \u0444\u043b\u0430\u0433\u043e\u0432 \u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433\u0430, \u0435\u0441\u043b\u0438 \u043e\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0441\u044f<\/li>\n<li>ACTION_MOVE \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0441\u0430\u043c\u043e\u043c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u043a\u0430\u0441\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u043b\u043e\u0441\u044c \u0432 \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b. \u041d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0441\u0447\u0438\u0442\u0430\u0442\u044c <br \/>  \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u043b \u0441\u043a\u0440\u043e\u043b\u043b. \u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430, \u043a\u0430\u043a SlideStackScroller, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0447\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u043e\u0439 <br \/>  \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433\u043e\u043c Motion Event\u2019\u043e\u0432 \u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0430. \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0441 \u043d\u0435 \u0437\u0430\u0431\u043e\u0442\u0438\u0442, \u0432 \u043a\u0430\u043a\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a, \u043c\u043e\u0436\u0435\u0442 \u043b\u0438 <br \/>  \u043e\u043d \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u0442\u044c\u0441\u044f \u0432 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0438\u043b\u0438 \u043d\u0435\u0442. \u041c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u0435\u043c\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0430 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u0438 \u043d\u0430 \u044d\u0442\u043e \u0438 \u043a\u0430\u043a \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a \u0443\u0436\u0435 \u0441\u0430\u043c \u0440\u0435\u0448\u0438\u0442<\/li>\n<li>ACTION_UP. \u0422\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u044d\u043a\u0440\u0430\u043d\u043e\u043c. \u041d\u041e: \u044d\u0442\u043e \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043b\u0430\u0431\u0438\u0442\u044c\u0441\u044f. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u0430\u044f <br \/>  \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b. \u042f \u0438\u043c\u0435\u044e \u0432 \u0432\u0438\u0434\u0443 \u0436\u0435\u0441\u0442, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u0441\u0435 \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438, \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043d \u043e\u0431\u044b\u0447\u043d\u043e fling. \u0411\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 (\u00ab\u0431\u0440\u043e\u0441\u043e\u043a\u00bb) \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c <br \/>  \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f \u0436\u0435\u0441\u0442, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0434\u0432\u0438\u0433\u0430\u044f \u043f\u0430\u043b\u044c\u0446\u0435\u043c \u043f\u043e \u044d\u043a\u0440\u0430\u043d\u0443, \u043a\u0430\u043a \u0431\u044b \u0440\u0430\u0437\u0433\u043e\u043d\u044f\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0438, \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0432 \u043a\u0430\u0441\u0430\u043d\u0438\u0435, \u043e\u0436\u0438\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u043a, \u043a\u0430\u043a <br \/>  \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e \u0431\u044b \u0441 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0442\u0435\u043b\u043e\u043c \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438. \u0422\u043e \u0435\u0441\u0442\u044c \u043f\u043e \u0438\u043d\u0435\u0440\u0446\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u0441\u043a\u043e\u043b\u044c\u0437\u0438\u043b \u0431\u044b \u0442\u0435\u043b\u0435\u0444\u043e\u043d, \u0435\u0441\u043b\u0438 \u0431\u044b \u043c\u044b \u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438 \u0435\u0433\u043e \u043f\u043e \u0441\u0442\u043e\u043b\u0443 \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443.<\/li>\n<li>\u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c, \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f \u043b\u0438 \u0436\u0435\u0441\u0442, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u0434\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u0430\u0439\u0434\u043e\u0432, \u0438\u043b\u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0436\u0435\u0441\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u0440\u0430\u043a\u0442\u043e\u0432\u0430\u043d \u043a\u0430\u043a \u0444\u043b\u0438\u043d\u0433, \u0438 <br \/>  \u0442\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0438 \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u0435\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044e \u0441\u043b\u0430\u0439\u0434\u043e\u0432<\/li>\n<\/ul>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0444\u043b\u0438\u043d\u0433, \u043a\u0430\u0436\u0443\u0449\u0438\u0439\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0438 \u043d\u0435\u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u043c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u044b\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0441\u043b\u0430\u0439\u0434\u0430. \u0412\u0441\u0451 \u0434\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e <br \/>  \u0441\u0435\u0439\u0447\u0430\u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u043e \u043a \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0441\u0432\u0430\u0439\u043f\u0443 \u043a\u0430\u043a \u0432 \u0441\u0430\u043c\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435, \u0442\u0430\u043a \u0438 \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u044d\u0442\u043e\u0442 \u0436\u0435\u0441\u0442 \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e \u0438 <br \/>  \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e.<\/p>\n<pre><code class=\"html\">if ((!mGestureDetector.onTouchEvent(event)  || ((SlideStackView)v).isOverScrolled()) && (event.getAction() == MotionEvent.ACTION_UP  || event.getAction() == MotionEvent.ACTION_CANCEL)){ justify(); }<\/code><\/pre>\n<p>  \u0415\u0449\u0451 \u0440\u0430\u0437 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u044d\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435. \u0417\u0434\u0435\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u043d\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043a\u0430\u043a \u043e\u0442\u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u0430 \u043d\u0430\u0448 \u0436\u0435\u0441\u0442 GestureDetector, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u0432\u0441\u0435 \u0436\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0439\u0434\u0443\u0442 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e. \u0412 \u044d\u0442\u043e\u043c <br \/>  \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0442\u043e\u0447\u043d\u043e \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0441\u0443\u043c\u0435\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0430\u043c \u0436\u0435\u0441\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442. \u0415\u0441\u043b\u0438 \u0432 \u044d\u0442\u043e\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u043c\u044b <br \/>  \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0438\u043c \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0442\u043e \u043d\u0430\u0448 \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0432\u0430\u0439\u043f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e MotionEvent\u2019\u043e\u0432 \u0434\u043e Gesture Detector\u2019\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0434\u043e\u0439\u0434\u0443\u0442.<\/p>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435, \u0435\u0441\u043b\u0438 \u0444\u043b\u0438\u043d\u0433 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0451\u043d, \u0434\u043b\u044f \u043d\u0430\u0441 \u0432\u0441\u0451 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f (\u0438\u043b\u0438 \u043d\u0430\u0447\u043d\u0451\u0442\u0441\u044f, \u043a\u043e\u043c\u0443 \u043a\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u0435\u0435) \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0430 onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY):<\/p>\n<pre><code class=\"html\">@Override public boolean onFling(MotionEvent e1, MotionEvent e2,  float velocityX, float velocityY) { if (mScroller.isTouchScrolling()){ LOG.w(&quot;mTouchScrolling in fling&quot;); } SlideInfo slide = getSlideInfo(mSelected); int dx = getAdjustedTargetX(velocityX) - slide.mOffset; mScroller.fling(-(int)getVelocity(dx)); return true; }<\/code><\/pre>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0444\u043b\u0438\u043d\u0433 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f, \u043f\u043e\u0442\u043e\u043c \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0430 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0441\u043b\u0430\u0439\u0434\u0430, <br \/>  \u0432\u044b\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c \u0444\u043b\u0438\u043d\u0433.<\/p>\n<p>  \u0417\u0430\u0447\u0435\u043c \u0436\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u043e\u043d\u0430 \u0443\u0436\u0435 \u0434\u0430\u043d\u0430? \u0412\u0441\u0451 \u0434\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u0439, \u043d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u043c \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043b\u044e\u0431\u043e\u0439 \u0444\u043b\u0438\u043d\u0433 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 <br \/>  \u0442\u043e\u0447\u043a\u0435, \u0438 \u044d\u0442\u0430 \u0442\u043e\u0447\u043a\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 getAdjustedTargetX():<\/p>\n<pre><code class=\"html\">\/**  * Defines target x coordinate of the slide.  * It depends on fling direction  * &lt;p&gt;  * In case right fling it is calculated like this  * &lt;pre&gt;  *   * getLeftEdge()           getRightEdge()         targetX  *  _|___________________________|______________________|__  * | |                           |rightOverScrollInFling|  |       * |  _ _ _ _ _ _ _ _ _ _ _ _ _ _ &lt;--------------------&gt;   |  * | |                           |                      |  |  * |                                                       |  * | |                           |                      |  |  * |      mSelectedSlide                                   |  * | |                           |                      |  |  * |                                                       |  * | |_ _ _ _ _ _ _ _ _ _ _ _ _ _|                      |  |  * |       SlideStackView                                  |  * |_|___________________________|______________________|__|  * &lt;\/pre&gt;  * &lt;p&gt;  * In case left fling it is calculated like this  * &lt;pre&gt;  *                          0  *  ________________________|_____________________________  * | |leftOverScrollInFling |                             |       * |  &lt;--------------------&gt; _ _ _ _ _ _ _ _ _ _ _ _ _ _  |  * | |                      |                           | |  * |                                                      |  * | |                      |                           | |  * |                                 mSelectedSlide       |  * | |                      |                           | |  * |                                                      |  * | |                      |_ _ _ _ _ _ _ _ _ _ _ _ _ _| |  * |       SlideStackView                                 |  * |_|______________________|_____________________________|  * &lt;\/pre&gt;  *   * @param velocityX velocity that defines direction of the fling  * @return delta x in pixels that slide needs to scolled by  * @see SlideStackView#getLeftEdge(int)  * @see SlideStackView#getRightEdge(int)  * @see SlideStackView#mRightOverScrollInFling  * @see SlideStackView#mLeftOverScrollInFling  *\/ private int getAdjustedTargetX(float velocityX) { int result = 0; if (velocityX &gt; 0){ result = getRightEdge(mSelected) - getLeftEdge(mSelected)  + mRightOverScrollInFling; \/\/LOG.v(&quot;onFling &quot; + targetX); } else { \/\/ relative to layout position of the slide result = 0 - mLeftOverScrollInFling; } return result; }<\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0442\u0435\u043b\u0430 \u043c\u0435\u0442\u043e\u0434\u0430, \u0440\u0430\u0441\u0447\u0451\u0442 \u044d\u0442\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u043b\u0438\u043d\u0433\u0430, \u043d\u043e \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0444\u043b\u0438\u043d\u0433\u0430 \u0432\u043f\u0440\u0430\u0432\u043e \u2014 \u044d\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u044f\u044f \u043f\u0440\u0430\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f <br \/>  \u0441\u043b\u0430\u0439\u0434\u0430 + \u00ab\u0437\u0430\u043d\u043e\u0441\u00bb \u043d\u0430 \u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043b\u0430\u0439\u0434 \u0443\u043b\u0435\u0442\u0438\u0442 \u0434\u0430\u043b\u044c\u0448\u0435 \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043f\u0440\u0430\u0432\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u0444\u043b\u0438\u043d\u0433 \u0432\u043b\u0435\u0432\u043e, \u0442\u043e \u044d\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u044f\u044f \u043b\u0435\u0432\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u2013 \u0437\u0430\u043d\u043e\u0441. \u0418 \u044d\u0442\u043e \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u0439 <br \/>  \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0430\u043d\u0430\u043b\u0438\u0437 user experience \u043f\u043e\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0430 \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0431\u043e\u043b\u0435\u0435 <br \/>  \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<p>  \u041d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Android \u0440\u0430\u0441\u0447\u0451\u0442\u043e\u043c \u043a\u0438\u043d\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0438 \u0444\u043b\u0438\u043d\u0433\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0441\u043a\u0440\u043e\u043b\u043b\u0435\u0440. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0438\u0437 Google \u0431\u044b\u043b\u0430 \u0432\u0437\u044f\u0442\u0430 \u0432\u0441\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0441\u043e \u0448\u043a\u043e\u043b\u044b \u0444\u043e\u0440\u043c\u0443\u043b\u0430 <br \/>  \u0440\u0430\u0432\u043d\u043e\u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f: S=V<sub>0<\/sub>*t-(g*t<sup>2<\/sup>)\/2. \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430, \u0432\u0440\u0435\u043c\u044f \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0437\u043c\u0435\u0440\u044f\u0442\u044c \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e <br \/>  \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0430\u0439\u0434. <\/p>\n<p>  \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0435 \u0441\u0442\u0430\u043b\u0438 \u0433\u0430\u0434\u0430\u0442\u044c \u0438 \u0432\u0437\u044f\u043b\u0438 \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0434\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"html\">mDefaultDeceleration = SensorManager.GRAVITY_EARTH   \/\/ g (m\/s^2)                       * 39.37f                        \/\/ inch\/meter                       * ppi                           \/\/ pixels per inch                       * ViewConfiguration.getScrollFriction()                       * 10.0f;<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u043e\u0442\u0432\u043b\u0435\u0447\u044c\u0441\u044f \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u043c\u044b, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c 4 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0443\u0442 \u043f\u0440\u0438 \u0444\u043b\u0438\u043d\u0433\u0435 \u0441 \u0440\u0430\u0437\u043d\u043e\u0439 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>  \u0412\u043e\u0437\u044c\u043c\u0451\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0441\u043b\u0430\u0439\u0434\u0430 \u0442\u0430\u043a\u0438\u043c:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/4c0\/49b\/eb6\/4c049beb62ee51dcf288889494c9d6b2.png\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/9fe\/004\/150\/9fe004150e233b6bb9af3b801e66afc3.png\"\/><\/p>\n<p>  \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0447\u0442\u043e \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0444\u043b\u0438\u043d\u0433 \u0438\u0437 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0423\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0435 4 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0433\u043e <br \/>  \u043b\u0435\u0432\u043e\u0433\u043e (1 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442) \u0438 \u043a\u0440\u0430\u0439\u043d\u0435\u0433\u043e \u043f\u0440\u0430\u0432\u043e\u0433\u043e (2 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442) \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441\u043b\u0430\u0439\u0434\u0430. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0447\u0442\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u044d\u0442\u0438\u043c\u0438 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 S<sub>n<\/sub><\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/e32\/486\/ffb\/e32486ffb64dbf2cd20764cba2110f64.png\"\/><\/p>\n<p>  S &lt; S<sub>n<\/sub>\/2 <\/p>\n<p>  \u0422\u0430\u043a\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b \u0444\u043b\u0438\u043d\u0433, \u043f\u0440\u0438\u0434\u0430\u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u043b \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f <br \/>  \u0434\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0434\u043b\u044f \u044d\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0444\u043b\u0438\u043d\u0433 \u0441 \u0442\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u0438\u0434\u0430\u043b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0438, <br \/>  \u0434\u043e\u0436\u0434\u0430\u0432\u0448\u0438\u0441\u044c, \u043a\u043e\u0433\u0434\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f, \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435, \u0442.\u0435. \u043a\u0440\u0430\u0439\u043d\u0435\u0435 \u043b\u0435\u0432\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/28f\/411\/8d8\/28f4118d8bdccac33d72add434fa0921.png\"\/><\/p>\n<p>  S<sub>n<\/sub>\/2&lt;S&lt; S<sub>n<\/sub><\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0431\u044b\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0439 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u0442\u044c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u043e \u0446\u0435\u043b\u0438, \u043d\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, <br \/>  \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432 \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0434\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u2014 \u0442\u0430\u043a\u0443\u044e, \u0447\u0442\u043e\u0431\u044b \u0435\u0451 \u0445\u0432\u0430\u0442\u0438\u043b\u043e \u0434\u043b\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u0442\u043e\u0447\u043a\u0443 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u043e\u0438\u0442 <br \/>  \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0444\u0438\u0437\u0438\u043a\u0443 \u0440\u0430\u0432\u043d\u043e\u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u0438, \u0437\u043d\u0430\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0438 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0444\u043b\u0438\u043d\u0433.<\/p>\n<p>  S<sub>n<\/sub>&lt;S&lt; S<sub>n<\/sub>+overscroll <\/p>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u0438\u0434\u0430\u043b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0437\u0430 \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043f\u0440\u0430\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439, \u043d\u043e \u043d\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0435\u0442 <br \/>  \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0433\u043e \u0437\u0430\u043d\u043e\u0441\u0430. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0451 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u043c\u044b \u0442\u043e\u0433\u043e \u0445\u043e\u0442\u0438\u043c, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0443\u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043a\u0430\u043a \u0431\u044b \u0437\u0430\u043d\u0435\u0441\u043b\u043e \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0443, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u043d <br \/>  \u0432\u044b\u0440\u043e\u0432\u043d\u044f\u0435\u0442\u0441\u044f \u0438 \u0432\u0435\u0440\u043d\u0451\u0442\u0441\u044f \u0432 \u043a\u0440\u0430\u0439\u043d\u0435\u0435 \u043f\u0440\u0430\u0432\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>  S&gt; S<sub>n<\/sub>+overscroll <\/p>\n<p>  \u0422\u0430\u043a\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0445\u0443\u0436\u0435. \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f, \u0447\u0442\u043e \u043e\u043d \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0435\u0442\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435 \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043f\u0440\u0430\u0432\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u0438 \u0437\u0430\u043d\u043e\u0441 \u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e <br \/>  \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0433\u043e. \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0448\u0435, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442, \u0445\u043e\u0442\u044c \u0438 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439, \u043d\u043e \u043d\u0435\u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442. \u041f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 <br \/>  \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u043e\u0447\u0435\u043d\u044c \u0440\u0435\u0437\u043a\u043e\u043c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0434\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u2014 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0435 \u0443\u043b\u0435\u0442\u0435\u043b \u0434\u0430\u043b\u0435\u043a\u043e \u0437\u0430 <br \/>  \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u044d\u043a\u0440\u0430\u043d\u0430.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0444\u043b\u0438\u043d\u0433 \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443, \u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0432\u0441\u0451 \u0442\u0435 \u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u043f\u043e\u0440\u043d\u044b\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0444\u043b\u0438\u043d\u0433 \u043c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0435\u0448\u0438\u0442\u044c, \u043a\u0430\u043a \u043d\u0430\u043c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434:<\/p>\n<pre><code class=\"html\">public void fling(int velocity){ mLastX = 0; final int maxX = 0x7FFFFFFF; final int minX = -maxX; fling(mLastX, 0, velocity, 0, minX, maxX, 0, 0); setNextMessage(MSG_SCROLL); }<\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u043d\u0443\u0436\u0435\u043d \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u043b\u0438\u043d\u0433\u0430 \u0438 \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e, \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c <br \/>  \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0430\u043c \u0444\u043b\u0438\u043d\u0433 \u0443 \u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0435\u0431\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043a\u0440\u043e\u043b\u043b.<\/p>\n<p>  \u041c\u0435\u0442\u043e\u0434 \u044d\u0442\u043e\u0442 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442, \u0432 \u043d\u0451\u043c \u043c\u044b \u043e\u0447\u0438\u0449\u0430\u0435\u043c \u0432\u0441\u0435 \u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0435 \u0442\u0443\u0434\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0445\u0435\u043d\u0434\u043b\u0435\u0440 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"html\">private final Handler mAnimationHandler = new AnimationHandler();   private void setNextMessage(int message) { clearMessages(); mAnimationHandler.sendEmptyMessage(message); } private void clearMessages() { mAnimationHandler.removeMessages(MSG_SCROLL); mAnimationHandler.removeMessages(MSG_JUSTIFY); }<\/code><\/pre>\n<p>  mAnimationHandler \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0438\u043d\u043d\u0435\u0440 \u043a\u043b\u0430\u0441\u0441\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0436\u0435 <br \/>  \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 TouchScreen\u2019\u043e\u043c:<\/p>\n<pre><code class=\"html\">private final class AnimationHandler extends Handler { @Override public void handleMessage(Message msg) { computeScrollOffset(); int currX = getCurrX(); int delta = mLastX - currX; mLastX = currX; if (delta != 0) { mListener.onScroll(-delta); } \u2026 } }<\/code><\/pre>\n<p>  \u0412\u0441\u0451 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0441\u0438\u043c \u0441\u043a\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0432 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u044d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435. \u0417\u0430\u0442\u0435\u043c \u0432\u044b\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u043d\u043e\u0432\u044b\u043c <br \/>  \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u043d\u0430\u043c. \u0412 \u043a\u043e\u043d\u0446\u0435 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043a\u0440\u043e\u043b\u043b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0441\u044f. \u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u043c\u044b \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u043b\u0438 \u0438\u0437 \u0442\u0435\u043b\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 onTouchEvent().<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0435\u043b\u043e \u0437\u0430 \u043c\u0430\u043b\u044b\u043c \u2014 \u043d\u0443\u0436\u043d\u043e \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u044d\u0442\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0441\u043b\u0430\u0439\u0434\u043e\u0432 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435. \u041e\u0442\u043f\u0440\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0441\u0442\u0430\u043d\u0435\u0442 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 onScroll():<\/p>\n<pre><code class=\"html\">@Override public void onScroll(int distance) { if (distance == 0){ return; } \/\/LOG.d(&quot;onScroll &quot; + distance); doScroll(distance); }<\/code><\/pre>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0443 \u0443\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c: \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 \u043d\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 doScrollInternal(), \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 actuallyDoScroll() \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f <br \/>  \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u0442\u044c \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0448 \u0441\u043a\u0440\u043e\u043b\u043b\u0435\u0440, \u043d\u043e \u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 api, \u0438\u043c\u0435\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u043a <br \/>  \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0443. \u041d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0437\u0436\u0435.<\/p>\n<pre><code class=\"html\">\/**  * Performs actual scrolling. Moves the views according  * to the current selected slide number and distance   * passed to the method. After the scrolling has been  * performed method {@link #onScrollPerformed()} will be  * called where you can apply some visual effects.  * @param distance scroll distance  *\/ private void doScroll(int distance) { adjustScrollDistance(distance); \/\/LOG.d(&quot;scroll delta &quot; + mScrollDelta); View selected = getChild(getSelectedViewIndex()); scrollChildBy(selected, mScrollDelta); notifyScrollPerformed(); onScrollPerformed(); fillViewsIn(); if (!mDirty.isEmpty()){ invalidate(mDirty.left, mDirty.top, mDirty.right, mDirty.bottom); mDirty.setEmpty(); } }<\/code><\/pre>\n<p>  \u041f\u043e\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0432\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u0435\u0442\u0430\u043b\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 adjustScrollDistance(). \u0421\u043a\u0430\u0436\u0443 \u043b\u0438\u0448\u044c, \u0447\u0442\u043e \u043e\u043d \u043c\u0435\u043d\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043b\u0430\u0439\u0434\u043e\u0432 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0443\u0436\u0438\u043d\u044f\u0449\u0435\u0433\u043e <br \/>  \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u0442\u044f\u043d\u0443\u0442\u044c \u0441\u043b\u0430\u0439\u0434 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0435\u0433\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<br \/>  \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0441\u043b\u0430\u0439\u0434, \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0447\u0435\u0433\u043e \u0441\u0442\u0430\u043b \u0432\u044b\u0437\u043e\u0432 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430. \u0414\u0432\u0438\u0433\u0430\u0435\u043c \u044d\u0442\u043e\u0442 \u0441\u043b\u0430\u0439\u0434 \u043d\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 <br \/>  \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439. \u0423\u0432\u0435\u0434\u043e\u043c\u043b\u044f\u0435\u043c \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u044f \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0430 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043b\u0430\u0439\u0434 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0451\u043d.<br \/>  \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430, \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u043b\u0430\u0439\u0434\u044b, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0438\u0445 \u043d\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0445 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c, \u0432 <br \/>  \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u043e\u0432\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438. \u041d\u0443 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e <br \/>  \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0430 \u0432\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f. <\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u0430\u0445:<\/p>\n<pre><code class=\"html\">\/**  * Moves the specified child by some amount of pixels  * @param child child to move  * @param scrollDelta scrolling delta  *\/ private void scrollChildBy(View child, int scrollDelta) { SlideInfo info = getSlideInfo(child); \/\/LOG.d(&quot;apply scroll  &quot; + info.mPosition + &quot; delta &quot; + scrollDelta); Rect childDirty = getChildRectWithShadow(child); info.mOffset -= scrollDelta; child.offsetLeftAndRight(-scrollDelta); childDirty.union(getChildRectWithShadow(child)); mDirty.union(childDirty); \/\/LOG.d(&quot;apply scroll  &quot; + info.mPosition + &quot; newoff &quot; + info.mOffset); }<\/code><\/pre>\n<p>  \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438, mDirty \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d. \u041f\u043e\u043c\u0438\u043c\u043e <br \/>  \u0440\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u044d\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043e\u0442\u043b\u0430\u0434\u043a\u0443, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u043b\u0438\u0448\u044c \u0437\u0430 \u043e\u0434\u043d\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, \u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u043a \u043d\u0435\u043c\u0443. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e <br \/>  \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u0448\u0430\u043d\u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043d\u0435\u0437\u0430\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u0439.<\/p>\n<pre><code class=\"html\">\/**  * Notifies scroll listeners about selected slide has been scrolled.  * Do nothing if there is no scroll listener was set earlier.  *\/ private void notifyScrollPerformed() { if (mScrollListener != null){ final float p = getSlidePositionInBounds(mSelected); \/\/LOG.v(&quot;notifyScrollPerformed &quot; + mSelected + &quot;, &quot; + p); mScrollListener.onSlideScrolled(mSelected, p); } } \/**  * Calculates position for the specified slide relative to it's  * scrollable bounds.   * &lt;p&gt;  * &lt;b&gt;Note:&lt;\/b&gt; Slide position coulld be &lt;code&gt;&lt; 0.0f&lt;\/code&gt; and  * &lt;code&gt; &gt; 1.0f  * @param slidePosition  * @return  *\/ private float getSlidePositionInBounds(int slidePosition) { SlideInfo info = getSlideInfo(slidePosition); int offset = info.mOffset; int scrollBounds = getWidth()  - getRightEdgeDelta(info.mPosition) - getLeftEdge(info.mPosition); float p = ((float) offset) \/ scrollBounds; return p; }<\/code><\/pre>\n<p>  \u0417\u0430\u0447\u0430\u0441\u0442\u0443\u044e, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u0443\u043c\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043e <br \/>  \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430. \u041d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u0438 \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <br \/>  \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d\u0438 \u0441\u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u0438. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0434\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u043e \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433\u043e\u043c \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0430. \u0421\u043e\u0431\u044b\u0442\u0438\u044f <br \/>  \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e: <br \/>  \u0441\u043e\u0431\u044b\u0442\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0430 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0441\u043b\u0430\u0439\u0434, \u043f\u0440\u0438\u0447\u0435\u043c \u0432\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043d\u0435 \u0432 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0441\u043b\u0430\u0439\u0434 <br \/>  \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0442\u0430\u043b \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c, \u0430 \u043b\u0438\u0448\u044c \u0432 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f. <br \/>  \u0441\u043e\u0431\u044b\u0442\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0441\u043b\u0430\u0439\u0434\u0430 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0433\u043e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u0433\u0440\u0430\u043d\u0438\u0446. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0445\u043e\u0434\u0438\u0442\u044c <br \/>  \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b [0, 1], \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u00ab\u0437\u0430\u043d\u043e\u0441\u00bb, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044f \u0435\u0449\u0451 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435.<\/p>\n<pre><code class=\"html\"> \/**      * Listener interface that informs about slide scrolling      * related events such as current selected slide has changed,      * or current selected slide scroll position has changed.      * @author k.kharkov      *\/     public interface OnSlideScrollListener{     \/**      * Called when the current selected position for slide      * has changed. Usually it happen after scrolling finished.      * @param selectedSlide      *\/     void onSlideChanged(int selectedSlide);     \/**      * Informs about changing scroll position of the slide.      * @param position current selected slide position      * @param p position of the slide inside it's scroll      * bounds. 0.0f at left edge, 1.0f at right edge. If      * &lt;code&gt;p &lt; 0.0f || p &gt; 1.0f&lt;\/code&gt; the slide is over      * scrolled to left or to the right.      *\/     void onSlideScrolled(int position, float p);     } \u041d\u0443 \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0438\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0438 \u0435\u0449\u0451 \u0432\u0441\u0442\u0440\u0435\u0442\u044f\u0442\u0441\u044f \u043d\u0435 \u0440\u0430\u0437. \u0418\u0445 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0438 \u0442\u0430\u043a, \u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u043e\u043c\u0443 \u043a\u043e\u0434 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432  \u0432\u043e\u043a\u0440\u0443\u0433 \u043d\u0435\u0433\u043e: \/**  * Retrieves slide's left edge coordinate in opened state  * relative to parent.  * @param position slide number in adapter's data set  * @return coordinate of the slide's left in opened state  *\/ private int getLeftEdge(int position){ return mAdapter == null ? 0 :mAdapter.getSlideOffset(position); }<\/code><\/pre>\n<p>  \u041e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043c\u0435\u0442\u043e\u0434. \u041d\u0443\u0436\u0435\u043d \u043e\u043d \u043b\u0438\u0448\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u0435\u0432\u0443\u044e \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0441\u043b\u0430\u0439\u0434\u0430. \u0422\u0430\u043a \u043a\u0430\u043a \u0441\u043b\u0430\u0439\u0434\u044b \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0437 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430, \u0442\u043e \u0438 \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u044f <br \/>  \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043e\u0442\u0442\u0443\u0434\u0430 \u0436\u0435, \u0447\u0442\u043e\u0431\u044b, \u0437\u0430\u0434\u0430\u0432 \u043d\u043e\u0432\u044b\u0439 \u0430\u0434\u0430\u043f\u0442\u0435\u0440, \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043c\u043e\u0433 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u0430\u0439\u0434\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0430.<\/p>\n<p>  \u0412 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u041f\u043e\u0447\u0442\u0430<a href=\"http:\/\/habrahabr.ru\/users\/mail\/\" class=\"user_link\">Mail<\/a>.Ru \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u044d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u043f\u043e\u043a \u0432\u043f\u0440\u0430\u0432\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0430, \u0438 \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043f\u0440\u0438\u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a <br \/>  \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432. \u0422\u0430\u043a \u043a\u0430\u043a \u044f \u043d\u0435 \u043b\u044e\u0431\u043b\u044e \u0445\u0430\u0440\u0434\u043a\u043e\u0434\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c, \u0442\u043e \u043c\u043d\u0435 \u043f\u0440\u043e\u0449\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440:<\/p>\n<pre><code class=\"html\">\/**  * Retrieves coordinate of the slide's left edge in closed state  * relative to parent.  * @param position slide number in adapter's data set  * @return coordinate of slide's left in closed state.  *\/ private int getRightEdge(int position) { int rightEdge = getRight() - getRightEdgeDelta(position); return rightEdge; } \/**  * Just calculates delta between child's right edge and  * parent's right edge  * @param position position of the child (in adapter's  * data set indexes)  * @return delta in pixels  *\/ private int getRightEdgeDelta(int position){ if (position &lt; 0){ return 0; } int delta = mSlideInvisibleOffsetFirst +  mSlideInvisibleOffset * position; return delta; }<\/code><\/pre>\n<p>  \u041f\u0430\u0440\u043e\u0447\u043a\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435, \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043b\u0435\u0432\u043e\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043b\u0430\u0439\u0434\u0430. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u044d\u0442\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0441\u043b\u0430\u0439\u0434\u0430 <br \/>  \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0441\u043b\u0430\u0439\u0434\u0430. \u041d\u0443\u0436\u043d\u043e \u044d\u0442\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u0441\u043b\u0430\u0439\u0434 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u043b \u0438\u0437-\u043f\u043e\u0434 <br \/>  \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u043f\u043e\u043a \u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u0435.<\/p>\n<p>  \u041d\u0435\u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c 2 \u043c\u0435\u0442\u043e\u0434\u0430: onScrollPerformed(), adjustScrollDistance().<\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043d\u0443\u0436\u0435\u043d \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u044b \u043f\u043e\u0441\u043b\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043b\u0430\u0439\u0434\u0430 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433. \u042d\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0438 <br \/>  \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0446\u0432\u0435\u0442\u043e\u0432\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432, \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u0437\u0430\u0442\u0435\u043c\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e, \u0438 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e <br \/>  \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0441\u043b\u0430\u0439\u0434\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0430. \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0442\u0430\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432 \u043b\u044e\u0431\u043e\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0432\u043e\u0434\u0438\u0442 \u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0443 \u043d\u0435\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0442\u0435\u043c, \u0447\u0442\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 <br \/>  \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u043e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f. \u0412\u0430\u0436\u043d\u043e \u043b\u0438\u0448\u044c \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432 \u0438\u0445, <br \/>  \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0435 \u0441\u043b\u043e\u043c\u0430\u043b \u0432\u0430\u0448\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u0441\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u041d\u043e \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c <br \/>  \u044d\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432 \u043d\u0438\u0445 \u0431\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u043c bouncing effect. \u041e\u043d, \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e, \u043e\u0447\u0435\u043d\u044c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u0435\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430\u043c. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043d\u0435 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u043d \u043f\u0440\u0438\u0434\u0430\u0451\u0442 Android-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0441\u0445\u043e\u0436\u0435\u0441\u0442\u044c \u0441\u043e <br \/>  \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0430\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c\u0438 \u0432 iOS. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0423 \u043c\u0435\u043d\u044f <br \/>  \u043d\u0435 \u0431\u044b\u043b\u043e \u0446\u0435\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b\u0439 look&#038;feel. \u042f \u0434\u0443\u043c\u0430\u044e, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u0440\u0430\u0439\u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u0432 iOS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 <br \/>  \u043d\u0430 \u0444\u0438\u0437\u0438\u043a\u0435 \u0440\u0430\u0432\u043d\u043e\u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f. \u041f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0435 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435. \u0422\u0430\u043a \u0432\u043e\u0442, \u043c\u043e\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435 \u0441\u043b\u0430\u0439\u0434\u0430 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u043c\u0443 <br \/>  \u043e\u0442\u0432\u0435\u0434\u0435\u043d\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0430, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u043f\u0440\u0443\u0436\u0438\u043d\u044f\u0449\u0438\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u0438 \u0441\u043b\u0430\u0439\u0434 \u043d\u0430\u0447\u0438\u043d\u0430\u043b \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0442\u044c\u0441\u044f, \u043a\u0430\u043a-\u0431\u0443\u0434\u0442\u043e \u043f\u043e\u043f\u0430\u043b \u0432 \u0441\u0435\u0442\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0435\u0433\u043e \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442\u044c. <\/p>\n<p>  \u041a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438, \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433 \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438: \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u0442\u044f\u043d\u0435\u0442 \u0441\u043b\u0430\u0439\u0434 \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438, <br \/>  \u0438\u043b\u0438 \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u043b \u0444\u043b\u0438\u043d\u0433. \u0412 \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u0445\u043e\u0434\u0430 \u0441\u043b\u0430\u0439\u0434\u0430 \u0437\u0430 \u0441\u0432\u043e\u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u0417\u0430 \u044d\u0442\u043e \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 adjustScrollDistance():<\/p>\n<pre><code class=\"html\">\/**  * Processes scroll distance according to the current scroll   * state of the slide stack view. Takes into account   * over scrolling, justifying.    * @param distance desired distance to scroll.  *\/ private void adjustScrollDistance(int distance) { mScrollDelta = distance; if (mScroller.isJustifying()){ processNonOverScroll(distance); } else if (mScrollDelta &lt; 0 && isRightOverScrolled()){ processOverScroll(distance); } else if (mScrollDelta &gt; 0 && isLeftOverScrolled()){ processOverScroll(distance); } else { processNonOverScroll(distance); } }<\/code><\/pre>\n<p>  \u041f\u043e\u043a\u0430 \u044f \u043f\u0438\u0441\u0430\u043b SlideStackView, \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043c\u0435\u043d\u044f\u043b\u0441\u044f \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0443\u0431\u0440\u0430\u0442\u044c \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0432\u044b\u0437\u043e\u0432\u044b \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043c\u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u0438 <br \/>  \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u043d\u043e\u0432\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0442\u0430\u043a, \u0430 \u043d\u0435 \u0438\u043d\u0430\u0447\u0435. \u0412 \u0438\u0442\u043e\u0433\u0435 \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u0430, \u0438 \u0441\u0434\u0435\u043b\u0430\u043b \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u043c \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c. <\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e\u0431 \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b\u0435. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u043b\u0438 \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b\u0435 \u0438 \u043d\u0443\u0436\u043d\u043e \u043b\u0438 \u043d\u0430\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0443 \u043d\u0430 \u044d\u0442\u043e:<\/p>\n<pre><code class=\"html\">\/**  * @return &lt;code&gt;true&lt;\/code&gt; if slide stack over scrolled  * to the right. &lt;code&gt;false&lt;\/code&gt; otherwise  *\/ private boolean isRightOverScrolled(){ \/**  *  info.mOffset - it is  *  the latest position of the slide's left side  *  so if it is over scrolled - return true  *    _________________  *   |    _____________|_  *   |   |lastSlide    | |  *   |&lt;-&gt;|             | |  *   |   |             | |  *   |   |_____________|_|  *   |_________________|  *        SlideStack  *\/ SlideInfo info = getSlideInfo(getSelectedViewIndex()); if (mSelected == mFirst + getChildCount() - 1){ if (info.mOffset &gt; getLeftEdge(info.mPosition)){ return true; } } \/**  *  getRightEdge() - it is left bound of the slide  *  when it is hidden  *    ___________|______  *   |           |    __|____________  *   |           |   |  |anySlide    |  *   |           |&lt;-&gt;|  |            |  *   |           |   |  |            |  *   |           |   |__|____________|  *   |___________|______|  *        SlideStack  *\/ int left = info.mOffset + getLeftEdge(mSelected);  if (left &gt; getRightEdge(mSelected)){ return true; } return false; }<\/code><\/pre>\n<p>  \u041c\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u043c, \u0447\u0442\u043e \u0441\u043b\u0430\u0439\u0434 \u0432\u043e\u0448\u0451\u043b \u0432 \u0440\u0435\u0436\u0438\u043c \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b\u0430, \u0435\u0441\u043b\u0438:<\/p>\n<ul>\n<li>\u042d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u043b\u0430\u0439\u0434, \u0438 \u0435\u0433\u043e \u043b\u0435\u0432\u0430\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0435\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0435\u0433\u043e \u043b\u0435\u0432\u043e\u0439 <br \/>  \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.<\/li>\n<li>\u042d\u0442\u043e \u043d\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u043b\u0430\u0439\u0434, \u0438 \u0435\u0433\u043e \u043b\u0435\u0432\u0430\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0435\u0435 \u043a\u0440\u0430\u0439\u043d\u0435\u0433\u043e \u043f\u0440\u0430\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0440\u0430\u0439\u043d\u0435\u0435 \u043f\u0440\u0430\u0432\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0441\u043b\u0430\u0439\u0434\u0430.<\/li>\n<\/ul>\n<pre><code class=\"html\">\/**  * @return &lt;code&gt;true&lt;\/code&gt; if the slide stack view is   * over scrolled to the left. &lt;code&gt;false&lt;\/code&gt; otherwise.   *\/ private boolean isLeftOverScrolled(){  View selected = getChild(getSelectedViewIndex()); SlideInfo info = getSlideInfo(selected); return selected.getRight() + info.mOffset &lt; getRightEdge(mSelected - 1); }<\/code><\/pre>\n<p>  \u041e\u0432\u0435\u0440\u0441\u0440\u043e\u043b\u043b\u043e\u043c \u0432\u043b\u0435\u0432\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u0430\u0439\u0434\u0430, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0433\u043e \u043f\u0440\u0430\u0432\u0430\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043b\u0435\u0432\u0435\u0435 \u043b\u0435\u0432\u043e\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0441\u043b\u0430\u0439\u0434\u0430. \u0422\u043e \u0435\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 <br \/>  \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u043b\u0430\u0439\u0434, \u0442\u043e \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043b\u0430\u0439\u0434\u0430 \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0433\u043e \u043f\u0440\u0430\u0432\u0430\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0432\u0435\u0435 \u043b\u0435\u0432\u043e\u0433\u043e \u043a\u0440\u0430\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e (\u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0433\u043e) \u0441\u043b\u0430\u0439\u0434\u0430. \u0414\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e <br \/>  \u0441\u043b\u0430\u0439\u0434\u0430 \u043d\u0435\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c\u0441\u044f \u0435\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0430\u0432\u0430\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0432\u0435\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0430 (\u0441\u043c. getRightEdge()).<\/p>\n<p>  \u0421\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044e \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0438, \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b\u0430:<\/p>\n<pre><code class=\"html\">\/**  * Changes actual scroll delta in case over scroll.  * Depends on whether we in fling mode or not.  * @param distance  *\/ private void processOverScroll(int distance) { \/\/LOG.d(&quot;process overscroll &quot; + distance); \/\/process over scroll while in fling mode; if (!mScroller.isTouchScrolling()){ mScroller.setDecelerationFactor(mDecelerationFactor); } else{ \/\/ or just slow down while touch scrolling mOverScrollOffset += distance; int nOffsetAbsolute = (int) (mOverScrollOffset \/ mOverScrollFactor); int oldOffsetAbsolute = mLastOverScrollOffset; int scrollDelta = nOffsetAbsolute - oldOffsetAbsolute; mLastOverScrollOffset += scrollDelta; mScrollDelta = scrollDelta; } }<\/code><\/pre>\n<p>  \u041f\u043e\u043a\u0430 \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0442\u0430 \u0447\u0430\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 touchScrolling, \u0438\u043b\u0438 \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0435\u0434\u0451\u0442 \u0441\u043b\u0430\u0439\u0434 \u0432 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u0443. \u041c\u043d\u0435 \u0432 <br \/>  \u0433\u043e\u043b\u043e\u0432\u0443 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0438\u0448\u043b\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e: \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044e \u043d\u0430 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u0431\u043e\u0439 <br \/>  \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0442\u0430\u0447 \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b\u0430. \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0442\u0430\u043a \u043e\u043d\u043e \u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 mOverscrollFactor \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 <br \/>  \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u0438 \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u043e\u0435 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u043b\u0438\u0437\u043a\u043e \u043a \u043d\u0443\u043b\u044e. \u041d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0435 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u0442\u0438\u0445\u043e\u043d\u044c\u043a\u0443 <br \/>  \u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u0441\u043b\u0430\u0439\u0434 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b\u0430, \u043d\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043e\u043b\u0433\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u043d\u0430\u0441 overscroll factor = 5, \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u0441\u043b\u0430\u0439\u0434 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c <br \/>  distance = 1. \u041f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u043c\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u044c \u0441\u043b\u0430\u0439\u0434. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u0448\u0430 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0430 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0412\u0442\u043e\u0440\u043e\u0439, \u0442\u0440\u0435\u0442\u0438\u0439, \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0439 \u0440\u0430\u0437 \u0442\u043e\u0436\u0435 \u0432\u0441\u0451 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e. \u041d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c <br \/>  \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0434\u0432\u0438\u0433\u0430\u0442\u044c \u0441\u043b\u0430\u0439\u0434 \u0434\u0430\u043b\u044c\u0448\u0435, \u0432 \u043f\u044f\u0442\u044b\u0439 \u0440\u0430\u0437. \u0418 \u0442\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u043e 5 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u0438, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0435, \u043c\u044b <br \/>  \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u044c \u0441\u043b\u0430\u0439\u0434 \u043d\u0430 1 \u043f\u0438\u043a\u0441\u0435\u043b\u044c. \u0422\u0435\u043f\u0435\u0440\u044c \u044f\u0441\u043d\u043e, \u0447\u0442\u043e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b <br \/>  \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u0434\u0432\u0435 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b mOverScrollOffset \u2014 \u044d\u0442\u043e \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445 \u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0434\u0432\u0438\u043d\u0443\u043b \u0441\u043b\u0430\u0439\u0434 \u0432 \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b. \u0418 mLastOverScrollOffset \u2014 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 <br \/>  \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0441\u0434\u0432\u0438\u043d\u0443\u043b\u0438 \u0441\u043b\u0430\u0439\u0434. \u0414\u0430\u043b\u0435\u0435 \u043f\u0443\u0442\u0435\u043c \u043d\u0435\u0445\u0438\u0442\u0440\u043e\u0439 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0438 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0440\u0435\u0448\u0438\u0442\u044c, \u043d\u0443\u0436\u043d\u043e \u043b\u0438 \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u044c \u0441\u043b\u0430\u0439\u0434 \u0432 \u043f\u0440\u0438 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043a\u0440\u043e\u043b\u043b\u0435, \u0438 \u043d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e. <\/p>\n<p>  \u0422\u0443\u0442 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0439 \u043a\u0430\u043c\u0435\u043d\u044c: \u043f\u0440\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e, \u043f\u043e\u0441\u043b\u0435 \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b\u0430, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043c\u0435\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f mOverScrollOffset \u0438 mLastOverScrollOffset. \u0414\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430 <br \/>  \u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u0441\u043b\u0435 \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b\u0430 \u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u0441\u043b\u0430\u0439\u0434 \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 (\u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b), \u0430 \u043f\u043e\u0442\u043e\u043c \u043e\u043f\u044f\u0442\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0434\u0432\u0438\u0433\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b. \u0415\u0441\u043b\u0438 <br \/>  \u044d\u0442\u0443 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0443 \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c, \u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0435 \u043f\u043e\u0434\u0451\u0440\u0433\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u043b\u0430\u0439\u0434\u043e\u0432. \u0417\u0430 \u044d\u0442\u0443 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0443 \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434:<\/p>\n<pre><code class=\"html\">\/**  * We need assume that actual scroll delta is distance parameter,  * we need adjust {@link #mLastOverScroll} if we will not go out   * from over scroll mode and over scroll again.  * @param distance raw distance passed from the scroller.  *\/ private void processNonOverScroll(int distance) { mScrollDelta = distance; if (isOverScrolled()){ mLastOverScrollOffset += distance; mOverScrollOffset = (int) (mLastOverScrollOffset * mOverScrollFactor); } else { mLastOverScrollOffset = 0; mOverScrollOffset = 0; } }<\/code><\/pre>\n<p>  \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c: \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f mOverScrollOffset \u0438 mLastOverScrollOffset \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u044f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0432\u0435\u0440\u043d\u0443\u0442\u044c <br \/>  \u0441\u043b\u0430\u0439\u0434 \u0438\u0437 \u0440\u0435\u0436\u0438\u043c\u0430 \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b\u0430, \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u0432\u0435\u0440\u0441\u043a\u043e\u043b\u043b \u0431\u044b\u043b \u0441\u043e\u0432\u0435\u0440\u0448\u0451\u043d. \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b\u0430 \u0432\u0441\u0451 \u043d\u0430\u0447\u043d\u0435\u0442\u0441\u044f \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2014 \u043a\u0430\u043a \u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c.<\/p>\n<p>  \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c\u0443: \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0441\u043b\u0430\u0439\u0434 \u043f\u0440\u0438 \u0444\u043b\u0438\u043d\u0433\u0435 \u0432\u044b\u043b\u0435\u0442\u0430\u0435\u0442 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b.<\/p>\n<p>  \u0422\u0443\u0442 \u0443\u0436\u0435 \u043d\u0435 \u043e\u0431\u043e\u0439\u0434\u0451\u0448\u044c\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043d\u0435\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441 \u043a\u0438\u043d\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u043c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u043c \u0441\u043b\u0430\u0439\u0434\u0430. \u0417\u0434\u0435\u0441\u044c \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e <br \/>  \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u0440\u0438\u0432\u044b\u0435 (\u043a\u0440\u0438\u0432\u044b\u0435 \u0411\u0435\u0437\u044c\u0435) \u0438 \u043c\u043d\u043e\u0433\u043e \u0447\u0435\u0433\u043e \u0435\u0449\u0451. \u041d\u043e \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u044f \u043f\u0440\u0438\u0448\u0451\u043b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c, \u043a\u0430\u043a \u0438 \u0441\u0430\u043c <br \/>  \u0440\u0430\u0441\u0447\u0451\u0442 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0444\u043b\u0438\u043d\u0433\u0435, \u043c\u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043c \u0436\u0435 \u0437\u0430\u043a\u043e\u043d\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 Scroller. \u0412\u0441\u043f\u043e\u043c\u043d\u0438\u043c \u0444\u043e\u0440\u043c\u0443\u043b\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b \u0440\u0430\u043d\u0435\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435: <\/p>\n<p>  S=V<sub>0<\/sub>*t-(g*t<sup>2<\/sup>)\/2 (\u0440\u0430\u0432\u043d\u043e\u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u043e\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435)<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u043b \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435. \u0420\u0430\u0437\u043e\u0431\u044c\u0451\u043c \u0432\u0441\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0430 3 \u043e\u0442\u0440\u0435\u0437\u043a\u0430:<\/p>\n<p>   S=V<sub>0<\/sub>*t-(g*t<sup>2<\/sup>)\/2 <\/p>\n<p>  \u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u0434\u0432\u0438\u0433\u0430\u043b\u0441\u044f \u043f\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c \u0440\u0430\u0432\u043d\u043e\u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b\u0448\u0435\u043b \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u0432 \u0440\u0435\u0436\u0438\u043c \u043e\u0432\u0435\u0440\u0441\u043a\u0440\u043e\u043b\u043b\u0430<\/p>\n<p>  S2=V<sub>k<\/sub>*t2- ((g*p)*\u3016t2\u3017<sup>2<\/sup>)\/2 <\/p>\n<p>  \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043e\u0442\u0440\u0435\u0437\u043a\u0430 \u043c\u044b \u0434\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0441 \u0442\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043e\u0442\u0440\u0435\u0437\u043e\u043a, \u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u043c\u044b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043c \u0432 p \u0440\u0430\u0437.<\/p>\n<p>  S3=V<sub>k2<\/sub>*t3- ((g*p*p)*\u3016t3\u3017<sup>2<\/sup>)\/2<\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435: \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043e\u0442\u0440\u0435\u0437\u043a\u0435, \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u043e\u043f\u044f\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0440 \u0440\u0430\u0437.<br \/>  \u0422\u0430\u043a \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0430\u0448 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f.<\/p>\n<p>  mScroller.setDecelerationFactor(mDecelerationFactor);<\/p>\n<p>  \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0441\u043a\u0440\u043e\u043b\u043b\u0435\u0440, \u0432\u044b\u0442\u0430\u0449\u0438\u0432 \u0435\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438. \u041a\u0442\u043e \u0441 \u043d\u0438\u043c\u0438 \u0437\u043d\u0430\u043a\u043e\u043c, \u0442\u043e\u0442 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0439\u043c\u0451\u0442, \u043e \u0447\u0451\u043c \u0438\u0434\u0451\u0442 \u0440\u0435\u0447\u044c:<\/p>\n<pre><code class=\"html\"> \/**       * Adjusts the current deceleration to slow down more or less.      * @param factor if &gt; 1.0 the scroller will slow down more.      * if factor &lt; 1.0 the scroller will slow down less.      *\/     public void setDecelerationFactor(float factor){         mVelocity = mVelocity - mDeceleration * mPassed \/ 1000.0f;     float velocity = mVelocity;     mDeceleration *= factor;     mDuration = (int) (1000.0f * mVelocity \/ mDeceleration);     int startX = mStartX = mCurrX;     int startY = mStartY = mCurrY;              int totalDistance = (int) ((velocity * velocity) \/ (2.0f * mDeceleration));                  mFinalX = startX + Math.round(totalDistance * mCoeffX);         \/\/ Pin to mMinX &lt;= mFinalX &lt;= mMaxX         mFinalX = Math.min(mFinalX, mMaxX);         mFinalX = Math.max(mFinalX, mMinX);                  mFinalY = startY + Math.round(totalDistance * mCoeffY);         \/\/ Pin to mMinY &lt;= mFinalY &lt;= mMaxY         mFinalY = Math.min(mFinalY, mMaxY);         mFinalY = Math.max(mFinalY, mMinY);         mStartTime += mPassed;     }<\/code><\/pre>\n<p>  \u0415\u0449\u0435 \u043e\u0434\u043d\u043e\u0439 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0441\u0442\u0430\u043b\u043e \u0442\u043e, \u0447\u0442\u043e \u0432 \u0442\u043e\u0439 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0441\u043a\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443, \u0431\u044b\u043b \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043c\u0435\u0447\u0435\u043d \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0435\u0439 <a href=\"http:\/\/habrahabr.ru\/users\/hide\/\" class=\"user_link\">hide<\/a>:<\/p>\n<pre><code class=\"html\"> \/**      * @hide      * Returns the current velocity.      *      * @return The original velocity less the deceleration. Result may be      * negative.      *\/     public float getCurrVelocity() {         return mVelocity - mDeceleration * timePassed() \/ 2000.0f;     }<\/code><\/pre>\n<p>  \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0440\u0435\u0448\u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443\u043b\u0443 v(t)=v<sub>0<\/sub>+at \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u043f\u043e\u043b\u0430\u043c (1000 <br \/>  \u2014 \u044d\u0442\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0430 \u043d\u0430 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b). \u0415\u0441\u043b\u0438 \u0443 \u043a\u043e\u0433\u043e-\u0442\u043e \u0435\u0441\u0442\u044c \u0434\u043e\u0433\u0430\u0434\u043a\u0438, \u0442\u043e \u0432\u043e\u0442 <a href=\"http:\/\/stackoverflow.com\/questions\/13024902\/android-scroller-current-velocity-calculation\">\u0442\u0443\u0442<\/a> \u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b <br \/>  \u0432\u043e\u043f\u0440\u043e\u0441, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0433 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c.<\/p>\n<p>  \u041c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u0447 event\u2019\u044b \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433. \u042d\u0442\u043e \u043b\u0438\u0448\u044c \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a. \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u043d\u0435 <br \/>  \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u044d\u043a\u0440\u0430\u043d\u0430. Android Framework \u0435\u0449\u0451 \u043d\u0435 \u043d\u0430\u0443\u0447\u0438\u043b\u0441\u044f \u0447\u0438\u0442\u0430\u0442\u044c \u043c\u044b\u0441\u043b\u0438, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u044f\u0442\u044c \u044d\u0442\u0443 <br \/>  \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0430 \u0441\u0435\u0431\u044f. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u044d\u0442\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435. \u041d\u0430\u043c \u0445\u0432\u0430\u0442\u0438\u0442 \u0442\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0432 \u043d\u0430\u0448 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043e\u0434 <br \/>  ViewGroup.dispatchTouchEvent().<\/p>\n<p>  \u042f \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430. \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043e\u043d\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0443\u0433\u0430\u044e\u0449\u0430\u044f, \u043d\u043e \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0442\u043e \u0432\u0441\u0451 \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u0441\u0442\u0440\u0430\u0448\u043d\u043e. \u0415\u0441\u043b\u0438 \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0432\u0441\u044e \u043c\u0438\u0448\u0443\u0440\u0443 \u0438 <br \/>  \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043d\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434, \u0442\u043e \u0432 \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<ul>\n<li>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c child, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f touchEvent.<\/li>\n<li>\u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 child \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d, \u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0435\u043c\u0443 event, \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0432 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0432 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0447\u0430\u0439\u043b\u0434\u0430 \u043d\u0435\u0442, \u0442\u043e event \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0430\u043c\u043e\u043c\u0443 <br \/>  ViewGroup.<\/li>\n<li>\u041f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e MotionEvent\u2019a \u0443 ViewGroup \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0435\u0433\u043e. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 MotionEvent \u043f\u043e\u0439\u0434\u0451\u0442 \u043a \u0441\u0430\u043c\u043e\u043c\u0443 ViewGroup, \u043c\u0438\u043d\u0443\u044f child\u2019\u043e\u0432.<\/li>\n<\/ul>\n<p>  \u0412\u043e\u043e\u0431\u0449\u0435, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u0430\u0441\u0430\u043d\u0438\u0439 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 View \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442 \u0432 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438.<\/p>\n<p>  \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0447\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043b\u0430\u0439\u0434\u043e\u0432 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0441\u043f\u0438\u0441\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0442\u044c \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0438 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e <br \/>  \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u0432\u0438\u0433\u0430\u044e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0432\u043e\u0442 \u0442\u0443\u0442 \u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442. \u0417\u0430\u0434\u0430\u0447\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044f \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0449\u0438\u0435 event\u2019\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c: \u0437\u0430\u043a\u0440\u044b\u0442\u044c <br \/>  \u0441\u043b\u0430\u0439\u0434 \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0438\u043b\u0438 \u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432\u043d\u0438\u0437\u0443 \u0441\u043f\u0438\u0441\u043a\u0430.<\/p>\n<p>  \u041f\u043e\u0439\u0434\u0451\u043c \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443. \u0412\u0441\u044f \u043c\u0430\u0433\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435:<\/p>\n<pre><code class=\"html\">\/**  * Determines whether the user tries to scroll the slide stack view  * or just tries to scroll some scrollable content inside the slide.  * &lt;p&gt;  * {@inheritDoc}  *\/ @Override public boolean onInterceptTouchEvent(MotionEvent ev) {<\/code><\/pre>\n<p>  \u0422\u0443\u0442, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438 \u0440\u0435\u0448\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a\u043e\u043c, \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043f\u0438\u0441\u0435\u043c\\\u043f\u0430\u043f\u043e\u043a\\\u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432 \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u043c\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<br \/>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e:<\/p>\n<pre><code class=\"html\">final int action = MotionEventCompat.getActionMasked(ev);   if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP){ \/*  * That means we need to abort all scrolling and return to nearest  * stable position in the slide stack. So justify position.  *\/ mBeingDrag = false; mUnableToDrag = false; mScroller.justify(); \/\/LOG.v(&quot;OnInterceptTouchEvent: action cancel | up&quot;); return false; } \/*  * In case we have already determined whether we need this  * touch event or not - just return immediately  *\/ if (action != MotionEvent.ACTION_DOWN){ if (mBeingDrag){ \/\/LOG.v(&quot;OnInterceptTouchEvent: already dragging&quot;); return true; } if (mUnableToDrag){ \/\/LOG.v(&quot;OnInterceptTouchEvent: already unable to drag&quot;); return false; } }<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0436\u0435\u0441\u0442 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f \u0438\u043b\u0438 \u0435\u0433\u043e \u043e\u0442\u043c\u0435\u043d\u0438\u043b\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0438\u043b MotionEvent), \u0442\u043e \u043c\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 event\u2019\u043e\u0432 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, <br \/>  \u043f\u043e\u0434\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u0430\u0439\u0434\u043e\u0432 \u0438 \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0432 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u0441\u0435 \u0444\u043b\u0430\u0433\u0438.<\/p>\n<p>  \u041d\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0443\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0436\u0435\u0441\u0442 \u0442\u043e\u0447\u043d\u043e \u043d\u0430\u043c \u0438\u043b\u0438 \u043d\u0435 \u043d\u0430\u043c, \u0442\u043e \u0442\u043e\u0433\u0434\u0430 \u0432\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0440\u0430\u0437\u0443 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e \u0442\u043e\u043c, \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c event \u0438\u043b\u0438 \u043d\u0435\u0442.<\/p>\n<pre><code class=\"html\">switch (action){ case MotionEvent.ACTION_DOWN:{ \/*  * remember the start coordinates for the motion event  * in order to determine drag event length  *\/ mInitialX = ev.getX(); mInitialY = ev.getY(); mActivePointerId = MotionEventCompat.getPointerId(ev, 0); \/*  * pass down event to the scroller after we have decided to intercept,  * not here. It helps to start calculation motion event in case we  * decide to intercept it.  *\/ mScroller.setActivePointer(mActivePointerId); if (mScroller.isScrolling() || isHiddenSlideMove(false)){ \/*  * in case the user start the touch while we didn't  * accomplish scrolling - intercept touch event.  *  *\/ mBeingDrag = true; mUnableToDrag = false; } else { \/*  * Otherwise let's start the process of detecting  * who the touch event belongs to.  *\/ mBeingDrag = false; mUnableToDrag = false; } \/\/LOG.v(&quot;OnInterceptTouchEvent: DOWN being drag &quot; + mBeingDrag + \/\/&quot;, unable to drag &quot; + mUnableToDrag); return mBeingDrag; }<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 event \u043e \u043d\u0430\u0447\u0430\u043b\u0435 \u0436\u0435\u0441\u0442\u0430, \u0442\u043e \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f <br \/>  \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e \u044d\u043a\u0440\u0430\u043d\u0443 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430. \u0415\u0441\u043b\u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u043d\u0435\u0442, \u0442\u043e \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c MotionEvent.ACTION_DOWN. \u0418 \u0443\u0436\u0435 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 event\u2019\u0430\u043c\u0438 \u0431\u0443\u0434\u0435\u043c <br \/>  \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c, \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0431\u044b\u043b\u043e \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u0441\u043b\u0430\u0439\u0434, \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0435 <br \/>  event\u2019\u044b child\u2019\u0443 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c. \u041a\u043e\u0441\u043d\u0443\u043b\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0441\u043b\u0430\u0439\u0434\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 isHiddenSlideMove(). \u0412\u0442\u043e\u0440\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c event\u2019\u044b <br \/>  \u043d\u0430\u0448\u0438\u043c \u00ab\u0434\u0435\u0442\u044f\u043c\u00bb, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0442\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u044f\u043c, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0436\u0435\u0441\u0442, \u043f\u043e\u043a\u0430 \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f. \u0422\u043e \u0435\u0441\u0442\u044c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f \u0435\u0449\u0451 \u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0441\u043a\u0440\u043e\u043b\u043b\u0435\u0440 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 <br \/>  \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u041e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0441\u043b\u0430\u0439\u0434\u0430:<\/p>\n<pre><code class=\"html\">\/**  * Defines whether motion events has been started on the closed slide or not  *  * @param extend  *            if &lt;code&gt;true&lt;\/code&gt; it will take into account  *            {@link #mTouchExtension}. Otherwise this method will only take  *            into account {@link #mInitialX} and {@link #mInitialY}  * @return &lt;code&gt;true&lt;\/code&gt; in case the motion event has been started to  *         the right of the last closed slide, &lt;code&gt;false&lt;\/code&gt; otherwise.  *\/ private boolean isHiddenSlideMove(boolean extend) { int x = (int) mInitialX; int y = (int) mInitialY;   Rect rightSide = new Rect(); boolean right = false; for (int i = getLastHiddenSlideIndex(); i &gt;= 0 && !right; i--) { View view = getChild(i); Rect rect = new Rect(); view.getHitRect(rect); rightSide.union(rect); if (rightSide.contains(x, y) || (extend && rightSide.contains(x + mTouchExtension, y))) { right = true; } } return right; }<\/code><\/pre>\n<p>  \u0414\u0430\u043b\u044c\u0448\u0435 \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043d\u0435\u0442:<\/p>\n<pre><code class=\"html\">case MotionEvent.ACTION_MOVE:{ final int activePointerId = mActivePointerId; if (activePointerId == INVALID_POINTER_ID) { \/\/ If we don't have a valid id, the touch down wasn't on content. break; } final int pointerIndex = MotionEventCompat.findPointerIndex(ev, activePointerId);             final float x = MotionEventCompat.getX(ev, pointerIndex); final float dx = x - mInitialX; final float xDiff = Math.abs(dx);   final float y = MotionEventCompat.getY(ev, pointerIndex); final float dy = y - mInitialY; final float yDiff = Math.abs(dy);               if (dx != 0 && canScroll(this, false, (int) dx, (int) x, (int) y)) {             \/\/ Nested view has scrollable area under this point. Let it be handled there.             if(!isHiddenSlideMove(false)) {             mUnableToDrag = true;             return false;             }             } \/\/ if it seems to be horizontal scroll if (xDiff &gt; mTouchSlop && xDiff * 0.5f &gt; yDiff){ \/\/LOG.v(&quot;OnInterceptTouchEvent: MOVE start drag&quot;); ev.setAction(MotionEvent.ACTION_DOWN); adjustSelectedSlide(); mScroller.onTouch(this, ev); mBeingDrag = true; } else if (yDiff &gt; mTouchSlop){ \/\/LOG.v(&quot;OnInterceptTouchEvent: MOVE unable to drag&quot;); mUnableToDrag = true; } break; }<\/code><\/pre>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f. \u0412\u0441\u0451 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0438 \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0435. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0432 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u0438\u043b\u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u043c <br \/>  \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u043f\u0430\u043b\u044c\u0446\u0435\u043c \u043f\u043e \u044d\u043a\u0440\u0430\u043d\u0443, \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043c (\u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043e\u0448\u0438\u0431\u0438\u0442\u044c\u0441\u044f). \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c <br \/>  \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0442\u043e\u0447\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u043d\u044c\u0448\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u043e \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041f\u0440\u043e\u0449\u0435 \u0432\u0441\u0435\u0433\u043e, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0442\u0430\u0447 \u0441\u043a\u0440\u0438\u043d\u0443 \u0434\u043e <br \/>  \u043f\u0440\u044f\u043c\u043e\u0439 \u043b\u0438\u043d\u0438\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0434\u0432\u0435 \u0442\u043e\u0447\u043a\u0438, \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0443\u044e \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0443\u0433\u043e\u043b <br \/>  \u043d\u0430\u043a\u043b\u043e\u043d\u0430 \u044d\u0442\u043e\u0439 \u043f\u0440\u044f\u043c\u043e\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0441\u0435\u0439 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442. \u0412\u0441\u0435 \u043f\u0440\u044f\u043c\u044b\u0435, \u043d\u0430\u043a\u043b\u043e\u043d \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043e\u0441\u0438 \u0425 \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c 22,5 \u0433\u0440\u0430\u0434\u0443\u0441\u0430, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c <br \/>  \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage3\/dd3\/64b\/aca\/dd364baca8a69f0448e6ccb8d9c575d8.png\"\/><\/p>\n<p>  \u041d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u0437\u0435\u043b\u0435\u043d\u044b\u043c\u0438 \u043b\u0438\u043d\u0438\u044f\u043c\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0436\u0435\u0441\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043a\u0430\u043a \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0436\u0435\u0441\u0442\u044b, \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u2014 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043a\u0430\u043a \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435. <br \/>  \u0421\u0438\u043d\u0438\u043c\u0438 \u043b\u0438\u043d\u0438\u044f\u043c\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u0430\u043a\u043b\u043e\u043d\u043d\u043e\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044b \u043e\u043f\u043e\u0440\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0430\u0448\u0438 \u0432\u044b\u0432\u043e\u0434\u044b \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u0438\u043d \u043a\u0430\u0442\u0435\u0442\u043e\u0432 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u0445 <br \/>  \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u0432.<\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u043c\u0435\u0436\u0434\u0443 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u043a\u0440\u043e\u043b\u043b\u043e\u043c. \u041d\u043e, \u043a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0442\u0440\u0443\u0434\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c <br \/>  \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043c\u0435\u043d\u044e \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u043c (\u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u043e\u043b\u043b \u043f\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u0438\u0441\u0435\u043c), \u043b\u0438\u0431\u043e \u043e\u043d \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0441\u043b\u0430\u0439\u0434 \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043f\u0438\u0441\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u043f\u0430\u043f\u043a\u0443. \u0422\u0443\u0442 <br \/>  \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u0431\u0435\u0433\u043d\u0443\u0442\u044c \u043a \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u043f\u043e\u0434\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438\u0437 Google (\u0441\u043c. ViewPager):<\/p>\n<pre><code class=\"html\">if (dx != 0 && canScroll(this, false, (int) dx, (int) x, (int) y)) {             \/\/ Nested view has scrollable area under this point. Let it be handled there.             if(!isHiddenSlideMove(false)) {             mUnableToDrag = true;             return false;             }             }     \/**      * Tests scrollability within child views of v given a delta of dx.      *      * @param v View to test for horizontal scrollability      * @param checkV Whether the view v passed should itself be checked for scrollability (true),      *               or just its children (false).      * @param dx Delta scrolled in pixels      * @param x X coordinate of the active touch point      * @param y Y coordinate of the active touch point      * @return true if child views of v can be scrolled by delta of dx.      *\/     protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {         if (v instanceof ViewGroup) {             final ViewGroup group = (ViewGroup) v;             final int scrollX = v.getScrollX();             final int scrollY = v.getScrollY();             final int count = group.getChildCount();             \/\/ Count backwards - let topmost views consume scroll distance first.             for (int i = count - 1; i &gt;= 0; i--) {                 final View child = group.getChildAt(i);                 if (x + scrollX &gt;= child.getLeft() && x + scrollX &lt; child.getRight() &&                         y + scrollY &gt;= child.getTop() && y + scrollY &lt; child.getBottom() &&                         canScroll(child, true, dx, x + scrollX - child.getLeft(),                                 y + scrollY - child.getTop())) {                     return true;                 }             }         }           return (checkV && ViewCompat.canScrollHorizontally(v, -dx)); }<\/code><\/pre>\n<p>  \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0441\u0451 \u0434\u0435\u0440\u0435\u0432\u043e View, \u0438 \u043a\u043e\u0433\u0434\u0430 \u0434\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u00ab\u043b\u0438\u0441\u0442\u044c\u0435\u0432\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u043e\u0434 \u043e\u0431\u043b\u0430\u0441\u0442\u044c\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u043a\u0440\u043e\u043b\u043b\u044f\u0442, \u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 <br \/>  ViewCompat.canScrollHorizontally(). \u041f\u0440\u0430\u0432\u0434\u0430, \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 \u0441\u0440\u0430\u0437\u0443, \u0438 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u043c\u044b \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u043c \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u043e\u043b\u043b. \u041c\u043d\u0435 <br \/>  \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u043b\u0438\u0448\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 ViewCompat, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043b\u044f \u043c\u0435\u043d\u044e \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439.<\/p>\n<pre><code class=\"html\">public class ViewCompat {   public static boolean canScrollHorizontally(View v, int direction){ if (v instanceof QuickActionView){ return ((QuickActionView)v).canScrollHorizontally(direction); } else { return android.support.v4.view.ViewCompat.canScrollHorizontally(v, direction); } } }<\/code><\/pre>\n<p>  \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0444\u0438\u043d\u0438\u0448. \u041e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u043f\u0430\u0440\u0430 \u0448\u0442\u0440\u0438\u0445\u043e\u0432.<\/p>\n<pre><code class=\"html\">\/**  * {@inheritDoc}  *\/ @Override public boolean onTouchEvent(MotionEvent event) { LOG.i(&quot;onTouchEvent: &quot; + event);         if (event.getAction() == MotionEvent.ACTION_DOWN && event.getEdgeFlags() != 0) {             \/\/ Don't handle edge touches immediately -- they may actually belong to one of our             \/\/ descendants.             return false;         }         if ((event.getAction() & MotionEventCompat.ACTION_MASK) == MotionEvent.ACTION_POINTER_UP){         continueWithSecondPointer(event);         return true;         }         \/\/ adjust selected slide in case we didn't it in #onInterceptTouchEvent() method         \/\/ if we have no touchable child under the touch event for instance         if (!mScroller.isScrolling() && event.getAction() == MotionEvent.ACTION_DOWN){ adjustSelectedSlide();         } return mScroller.onTouch(this, event); }<\/code><\/pre>\n<p>  \u0414\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u0435\u043c \u0441\u043a\u0440\u043e\u043b\u043b\u0435\u0440\u0443 \u0432\u0441\u0435 event\u2019\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0440\u0430\u043d\u0435\u0435. \u0422\u0430\u043a\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043a\u043e\u0441\u043d\u0443\u043b\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, <br \/>  \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 View.<\/p>\n<pre><code class=\"html\">@Override public boolean dispatchTouchEvent(MotionEvent ev) { \/\/LOG.v(&quot;dispatchTouchEvent: &quot; + ev); if (getChildCount() == 0){ return false; } return super.dispatchTouchEvent(ev); }<\/code><\/pre>\n<p>  \u0418 \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0434\u0443\u0440\u0430\u043a\u0430. \u041d\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0440\u0430\u0441\u0447\u0451\u0442\u044b, \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043b\u0430\u0439\u0434\u0430.<\/p>\n<p>  \u041f\u043e\u043a\u0430 \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u0441\u043b\u0430\u0439\u0434\u0441\u0442\u0435\u043a, \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0437\u0430\u043d\u044f\u043b\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u0438 \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a, \u043a\u0443\u0434\u0430 \u0438 \u0432 \u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f MotionEvent\u2019\u044b. <br \/>  \u041f\u043e\u0434\u0441\u043a\u0430\u0436\u0443 \u043e\u0434\u043d\u0443 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c \u2014 \u0441\u0442\u0430\u0440\u044b\u0435 \u0434\u043e\u0431\u0440\u044b\u0435 \u043b\u043e\u0433\u0438. \u0412\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043b\u043e\u0436\u0438\u0442\u044c \u043b\u043e\u0433\u0430\u043c\u0438 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 dispatchTouchEvent(), onInterceptTouchEvent() \u0438 onTouchEvent(), \u0430 \u0432 \u0442\u0440\u0443\u0434\u043d\u043e\u0439 <br \/>  \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c, \u043a\u0443\u0434\u0430 \u0438 \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u044d\u0442\u043e\u0442 event. \u041d\u043e, \u043a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u0441\u0430\u043c\u044b\u043c \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c \u043a \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u041a \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u043d\u0430 <br \/>  developer.android.com \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0435\u043f\u043b\u043e\u0445\u0438\u0435 \u0433\u0430\u0439\u0434\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 event\u2019\u043e\u0432.<\/p>\n<p>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u043c, \u043a\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u043b \u0434\u043e \u043a\u043e\u043d\u0446\u0430. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438 \u0441\u043e\u0432\u0435\u0442\u044b \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0442\u0435\u043c, \u043a\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0438\u043b\u0438 \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b \u0441\u043a\u0440\u043e\u043b\u043b\u044f\u0449\u0438\u0435\u0441\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u044b.<\/p>\n<p>  \u041f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u041f\u043e\u0447\u0442\u043e\u0439<a href=\"http:\/\/habrahabr.ru\/users\/mail\/\" class=\"user_link\">Mail<\/a>.Ru \u043d\u0430 Android \u0438 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u044f.    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/company\/mailru\/blog\/196912\/\"> http:\/\/habrahabr.ru\/company\/mailru\/blog\/196912\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043e \u0441\u0432\u043e\u0451\u043c \u043e\u043f\u044b\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 SlideStackView \u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u0435 Mail.Ru \u043f\u043e\u0434 Android. \u0422\u043e\u0433\u0434\u0430 \u044f \u043f\u043e\u043e\u0431\u0435\u0449\u0430\u043b, \u0447\u0442\u043e \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u044e \u0432\u0442\u043e\u0440\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u0432 <br \/>  \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u0447\u0430\u0441\u0442\u044c. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0451\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 <br \/>  \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u2014 \u043e\u0431 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438. \u0412\u0441\u0435 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0432\u044b\u043a\u043b\u0438 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u044b\u043c \u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e <br \/>  \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0432\u0430\u0448\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Touch screen.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-196912","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/196912","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=196912"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/196912\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=196912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=196912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=196912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}