рдПрдВрдбреНрд░реЙрдЗрдб рд╡реЗрдмрд╡реНрдпреВ рдореЗрдВ PhotoSwipe рдЧреИрд▓рд░реА рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ

рдореИрдВ рдПрдХ рдкреЗрд╢реЗрд╡рд░ рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рд╣реИред рдЕрдм рдореИрдВ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдПрдбрдорд┐рдирд┐рд╕реНрдЯреНрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдХрд┐ рд▓реЛрдХрдкреНрд░рд┐рдп рдЖрдИрдЯреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореВрд▓ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд▓реЗрдЦ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд▓реЗрдЦ рдореЗрдВ рд╕рднреА рдЪрд┐рддреНрд░ рдЧреИрд▓рд░реА рдореЗрдВ рдЦреБрд▓реЗрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╣рдмреНрд░ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВред

рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдореИрдиреБрдЕрд▓ рд╕рд░рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдореИрдиреБрдЕрд▓ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдореИрдВрдиреЗ рдХрдИ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЖрдЬрд╝рдорд╛рдПред рдХреБрдЫ рдиреЗ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛, рджреВрд╕рд░реЛрдВ рдХреЛ jQuery рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкреЗрдЬ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ PhotoSwipe рдкреНрд▓рдЧрдЗрди рдЪреБрдирд╛ред рдкреНрд▓рдЧрдЗрди рдХреЛ jQuery рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд╡рдЬрди рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдкрд╣рд▓реЗ, рдЕрдиреБрднрд╡рд╣реАрдирддрд╛ рд╕реЗ, рдореИрдВрдиреЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХрдЪреНрдЪреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦрд╛, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд╕рдВрдкрддреНрддрд┐ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдРрдк тЖТ рдирдпрд╛ тЖТ рдлрд╝реЛрд▓реНрдбрд░ тЖТ рдПрд╕реЗрдЯреНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рд░рд╛рдЗрдЯ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

рдорд╛рд░реНрдХрдЕрдк рдПрдХ рд╕рд░рд▓ рд╡реЗрдм рд╡реНрдпреВ рд╣реЛрдЧрд╛:

рдХреЛрдб
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent"></WebView> </android.support.constraint.ConstraintLayout> 


рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ PhotoSwipe (рдкреНрд▓рдЧрдЗрди рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд▓рд┐рдВрдХ) рд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдпрд╛ рдХреНрд▓реЛрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдбрд┐рд╕реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд╕рдореНрдкреВрд░реНрдг рдХрдВрдЯреЗрдВрдЯ рдХреЛ рд╕рдореНрдкрддреНрддрд┐рдпреЛрдВ рдкрд░ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (Dist рдХреЛ рдирд╛рдо рдмрджрд▓рдХрд░ PhotoSwipe рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк css рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ style.csf рдлрд╝рд╛рдЗрд▓ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЪрд┐рддреНрд░ рдкреВрд░реА рдЪреМрдбрд╝рд╛рдИ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрдВред

 img { width: 100%; height: auto; } 

рдЧреИрд▓рд░реА рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╢реИрд▓рд┐рдпреЛрдВ, рдЬрд╛рд╡рд╛рд╕реНрд▓рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рддреНрд╡рдЪрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реИрд▓реА рдлрд╝рд╛рдЗрд▓ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк HTML рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ webview рдХреЗ рд▓рд┐рдП html рдЬрд╛ рд░рд╣рд╛ рд╣реИ
 public String getHTML() { String header = "<!DOCTYPE HTML><HTML><head><title>test</title>"; //  ,      //     . String headerEnd = "</head><body onload=\"init();\">"; String footer = "</body></HTML>"; String charset = "<meta charset=\"utf-8\">"; String style = "<link href=\"css/style.css\" type=\"text/css\" rel=\"stylesheet\" />"; String pscss = "<link rel=\"stylesheet\" href=\"PhotoSwipe/photoswipe.css\">"; String psdscss = "<link rel=\"stylesheet\" href=\"PhotoSwipe/default-skin/default-skin.css\">"; // ,        String script = "<script type=\"text/javascript\" src=\"js/script.js\"></script>"; String psjs = "<script src=\"PhotoSwipe/photoswipe.js\"></script> "; String psuijs = "<script src=\"PhotoSwipe/photoswipe-ui-default.min.js\"></script>"; StringBuilder stringBuilder = new StringBuilder(); //  head stringBuilder.append(header); stringBuilder.append(charset); stringBuilder.append(style); stringBuilder.append(pscss); stringBuilder.append(psdscss); stringBuilder.append(script); stringBuilder.append(psjs); stringBuilder.append(psuijs); stringBuilder.append(headerEnd); stringBuilder.append("<img src=\"https://ps.denko.me/images/linux1.jpg\" />"); stringBuilder.append("<img src=\"https://ps.denko.me/images/linux2.jpg\" />"); stringBuilder.append("<img src=\"https://ps.denko.me/images/linux3.jpeg\" />"); stringBuilder.append(getPhotoSwipeHTML()); stringBuilder.append(footer); return stringBuilder.toString(); 
ред

рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЧреИрд▓рд░реА рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХреЛ рдкреЗрдЬ рдХреЗ рд╕реНрд░реЛрдд рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд░рд▓ рдкреНрд▓рдЧрдЗрди рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕рдорд╛рдкрди рдЯреИрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдб рдбрд╛рд▓рдирд╛ рдЙрдЪрд┐рдд рд╣реИ

рдЧреИрд▓рд░реА рдХрдВрдЯреЗрдирд░
 public String getPhotoSwipeHTML() { return "<!-- Root element of PhotoSwipe. Must have class pswp. -->\n" + "<div class=\"pswp\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\n" + "\n" + " <!-- Background of PhotoSwipe. \n" + " It's a separate element as animating opacity is faster than rgba(). -->\n" + " <div class=\"pswp__bg\"></div>\n" + "\n" + " <!-- Slides wrapper with overflow:hidden. -->\n" + " <div class=\"pswp__scroll-wrap\">\n" + "\n" + " <!-- Container that holds slides. \n" + " PhotoSwipe keeps only 3 of them in the DOM to save memory.\n" + " Don't modify these 3 pswp__item elements, data is added later on. -->\n" + " <div class=\"pswp__container\">\n" + " <div class=\"pswp__item\"></div>\n" + " <div class=\"pswp__item\"></div>\n" + " <div class=\"pswp__item\"></div>\n" + " </div>\n" + "\n" + " <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->\n" + " <div class=\"pswp__ui pswp__ui--hidden\">\n" + "\n" + " <div class=\"pswp__top-bar\">\n" + "\n" + " <!-- Controls are self-explanatory. Order can be changed. -->\n" + "\n" + " <div class=\"pswp__counter\"></div>\n" + "\n" + " <button class=\"pswp__button pswp__button--close\" title=\"Close (Esc)\"></button>\n" + "\n" + " <button class=\"pswp__button pswp__button--share\" title=\"Share\"></button>\n" + "\n" + " <button class=\"pswp__button pswp__button--fs\" title=\"Toggle fullscreen\"></button>\n" + "\n" + " <button class=\"pswp__button pswp__button--zoom\" title=\"Zoom in/out\"></button>\n" + "\n" + " <!-- Preloader demo https://codepen.io/dimsemenov/pen/yyBWoR -->\n" + " <!-- element will get class pswp__preloader--active when preloader is running -->\n" + " <div class=\"pswp__preloader\">\n" + " <div class=\"pswp__preloader__icn\">\n" + " <div class=\"pswp__preloader__cut\">\n" + " <div class=\"pswp__preloader__donut\"></div>\n" + " </div>\n" + " </div>\n" + " </div>\n" + " </div>\n" + "\n" + " <div class=\"pswp__share-modal pswp__share-modal--hidden pswp__single-tap\">\n" + " <div class=\"pswp__share-tooltip\"></div> \n" + " </div>\n" + "\n" + " <button class=\"pswp__button pswp__button--arrow--left\" title=\"Previous (arrow left)\">\n" + " </button>\n" + "\n" + " <button class=\"pswp__button pswp__button--arrow--right\" title=\"Next (arrow right)\">\n" + " </button>\n" + "\n" + " <div class=\"pswp__caption\">\n" + " <div class=\"pswp__caption__center\"></div>\n" + " </div>\n" + "\n" + " </div>\n" + "\n" + " </div>\n" + "\n" + "</div>"; } 


рдкреНрд░рд▓реЗрдЦрди рдЫрд╡рд┐ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ PhotoSwipe рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреАред рдореИрдВ рдЖрд╡реЗрджрди рдореЗрдВ рдХрд┐рд╕реА рдФрд░ рдХреА рд╕рд╛рдЗрдЯ рд╕реЗ рдПрдХ рд▓реЗрдЦ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рддреИрдпрд╛рд░ HTML рдкреНрд░рд╛рдкреНрдд рд╣реИред рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╕рд╛рде рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдХрд╛рдо рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореИрдВ рд╕рднреА рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛ рдХреЛ рдмрджрд▓рддрд╛ рд╣реВрдВ (рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрдЦ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрддрддрд╛ рдирд╣реАрдВ рд╣реИ), рдПрдХ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ (рдЬрдм рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпреВрдЖрд░рдПрд▓ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рдЧреИрд▓рд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд▓рдЧ-рдЗрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ)ред

рдкреНрд▓рдЧрдЗрди рдХреЛ рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЧреИрд▓рд░реА рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЬрдм рдкреВрд░реЗ рдкреГрд╖реНрда рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЫрд╡рд┐ рдХреЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдЖрдХрд╛рд░ рдФрд░ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдКрдВрдЪрд╛рдИ рдЧреБрдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдЕрдВрддрд┐рдо рдЖрдХрд╛рд░реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдбред рдкрд╣рд▓реЗ, рдЬрдм рдкреГрд╖реНрда рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, init () рдлрд╝рдВрдХреНрд╢рди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ; рдлрд┐рд░, рдЬрдм рдЖрдк рдЫрд╡рд┐ рдУрдкрдирдЧреИрд▓рд░реА () рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВред

рдХреЛрдб
 //         function init() { var images = document.images; for (var i = 0; i < images.length; i++) { images[i].className = "photoSwipe"; images[i].onclick = function () { openGalery(this.attributes["src"].value); } } } //    function openGalery(url) { var images = document.getElementsByClassName("photoSwipe"); var items = new Array(); for (var i = 0; i < images.length; i++) { items.push(getAttributes(images[i])); } startPhotoSwipe(items, getIndex(images, url)); } //    function getAttributes(image) { return { src: image.attributes["src"].value, w: image.naturalWidth, h: image.naturalHeight } } //   ,    function getIndex(images, url) { for(var i = 0; i < images.length; i++) { if (url == images[i].attributes["src"].value) return i; } return false; } //   function startPhotoSwipe(items, index) { var pswpElement = document.querySelectorAll('.pswp')[0]; // define options (if needed) var options = { // optionName: 'option value' // for example: index: index, // start at index slide bgOpacity: 0.9, pinchToClose: false, fullscreenEl: false, closeEl:false, zoomEl: false, shareEl: false, indexIndicatorSep: '  ', tapToClose: true }; callAndroid.setGallery(true); //     Java  ,    // Initializes and opens PhotoSwipe var gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options); gallery.init(); } 


рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ WebView рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдкреГрд╖реНрда рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

 webView = findViewById(R.id.webView); webView.setWebViewClient(new WebViewClient()); webView.setWebChromeClient(new WebChromeClient()); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setDomStorageEnabled(true); 

рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдкреГрд╖реНрда рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдЖрдк рдЫрд╡рд┐ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд▓рдЧрдЗрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдЧреИрд▓рд░реА рдХреЗ рдЦреБрд▓реЗ рдмрдЯрди рдХреЛ рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдкреНрд▓рдЧрдЗрдиред

рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдЬрд╡рд┐рд╕реНрдкрд┐рд▓реНрдЯ рдкреБрд▓ рдмрдирд╛рдпрд╛ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЧреИрд▓рд░реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдЧрд▓рдЯрди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреЛрдб
 package me.denko.photoswipe; class GalleryState { private static final GalleryState ourInstance = new GalleryState(); static GalleryState getInstance() { return ourInstance; } private GalleryState() { } private boolean isGallery = false; public boolean isGallery() { return isGallery; } public void setGallery(boolean gallery) { isGallery = gallery; } } 


WebView рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕

рдХреЛрдб
 package me.denko.photoswipe; import android.webkit.JavascriptInterface; public class JavascriptFromWebView { @JavascriptInterface public static void setGallery(boolean bool) { GalleryState.getInstance().setGallery(bool); } } 


рдЖрдкрдХреЛ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ WebView рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

 webView.addJavascriptInterface(new JavascriptFromWebView(), "callAndroid"); 

рдЧреИрд▓рд░реА рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдкрдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛
 callAndroid.setGallery(true); 


Photoswipe.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЧреИрд▓рд░реА рдмрдВрдж рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рдХреЛрдб
 close: function() { if(!_isOpen) { return; } callAndroid.setGallery(false); //    _isOpen = false; _isDestroying = true; _shout('close'); _unbindEvents(); _showOrHide(self.currItem, null, true, self.destroy); }, 


рдЕрдм рдЬрдм рдЖрдк рдЧреИрд▓рд░реА рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдерд┐рддрд┐ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рд╣реЛрддреА рд╣реИ, рдмрдВрдж рд╣реЛрдиреЗ рдкрд░, рдЭреВрдареАред рдмреИрдХ рдмрдЯрди рд╣реИрдВрдбрд▓рд░ WebView рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рднреА рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИред

рдХреЛрдб
 webView.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() != KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK) { if (GalleryState.getInstance().isGallery()) { webView.reload(); GalleryState.getInstance().setGallery(false); } else onBackPressed(); } return true; } }); 


рдЕрдм рдЧреИрд▓рд░реА рдХреЛ рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдмреИрдХ рдмрдЯрди рдХреЗ рд╕рд╛рде рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкреВрд░реНрдг github рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдбред

рд╕рдВрд╣рд┐рддрд╛ рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдЕрдЧрд░ рдореИрдВрдиреЗ рдХреБрдЫ рдЧрд▓рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреЗрдВред

Source: https://habr.com/ru/post/hi454578/


All Articles