android 获取webview中所有的图片

匿名 (未验证) 提交于 2019-12-03 00:30:01
webView.addJavascriptInterface(new MJavascriptInterface(this), "imagelistener");  webView.setWebViewClient(new WebViewClient(){      @Override     public boolean shouldOverrideUrlLoading(WebView view, String url) {          return super.shouldOverrideUrlLoading(view, url);     }      @Override     public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {         handler.proceed();     }      @Override     public void onPageFinished(WebView view, String url) {         super.onPageFinished(view, url);          webView.loadUrl("javascript:(function(){" +                 "var objs = document.getElementsByTagName(\"img\"); " +                 " var array=new Array(); " +                 " for(var j=0;j<objs.length;j++){ array[j]=objs[j].src; }"+                 "for(var i=0;i<objs.length;i++)  " +                 "{"                 + "    objs[i].onclick=function()  " +                 "    {  "                 + "        window.imagelistener.openImage(this.src,array);  " +                 "    }  " +                 "}" +                 "})()");     } });
 

public class MJavascriptInterface {      private Activity activity;     private List<String> list_imgs = new ArrayList<>();     private int index = 0;      public MJavascriptInterface(Activity activity){          this.activity = activity;     }      @JavascriptInterface     public void openImage(String img, String[] imgs) {          list_imgs.clear();          for (int i = 0; i < imgs.length; i++) {              if (imgs[i].equals(img)){                  index = i;             }              list_imgs.add(imgs[i]);         }          activity.runOnUiThread(new Runnable() {             @Override             public void run() {                  ScaleImageView scaleImageView = new ScaleImageView(activity);                  scaleImageView.setUrls(list_imgs,index);                  scaleImageView.create();             }         });     } }
 

/**  * Created by Hang.Yang on 2018/5/14 14:34.  * If you find a path with no obstacles, it probably doesn’t lead anywhere.  * In LongCaiHaErBin  */  public class ScaleImageView {      private static final byte URLS = 0;     private static final byte FILES = 1;     private byte status;      private Activity activity;      private List<String> urls;     private List<File> files;     private List<File> downloadFiles;     private List<Bitmap> list_bitmap;      private int selectedPosition;      private Dialog dialog;      private ImageView delete;     private ImageView download;     private TextView imageCount;     private ViewPager viewPager;      private List<View> views;     private MyPagerAdapter adapter;      private OnDeleteItemListener listener;     private int startPosition;      public ScaleImageView(Activity activity) {         this.activity = activity;         init();     }      public void setUrls(List<String> urls, int startPosition) {         if (this.urls == null) {             this.urls = new ArrayList<>();         } else {             this.urls.clear();         }         this.urls.addAll(urls);         status = URLS; //        delete.setVisibility(View.GONE);         /*if (downloadFiles == null) {             downloadFiles = new ArrayList<>();         } else {             downloadFiles.clear();         }*/         if (list_bitmap == null){              list_bitmap = new ArrayList<>();         }else {              list_bitmap.clear();         }         this.startPosition = startPosition++;         String text = startPosition + "/" + urls.size();         imageCount.setText(text);     }      public void setFiles(List<File> files, int startPosition) {         if (this.files == null) {             this.files = new LinkedList<>();         } else {             this.files.clear();         }         this.files.addAll(files);         status = FILES;         download.setVisibility(View.GONE);         this.startPosition = startPosition++;         String text = startPosition + "/" + files.size();         imageCount.setText(text);     }      public void setOnDeleteItemListener(OnDeleteItemListener listener) {         this.listener = listener;     }      private void init() {         RelativeLayout relativeLayout = (RelativeLayout) activity.getLayoutInflater().inflate(R.layout.dialog_scale_image, null); //        ImageView close = (ImageView) relativeLayout.findViewById(R.id.scale_image_close); //        delete = (ImageView) relativeLayout.findViewById(R.id.scale_image_delete);         download = (ImageView) relativeLayout.findViewById(R.id.scale_image_save);         imageCount = (TextView) relativeLayout.findViewById(R.id.scale_image_count);         viewPager = (ViewPager) relativeLayout.findViewById(R.id.scale_image_view_pager);         dialog = new Dialog(activity, R.style.Dialog_Fullscreen);         dialog.setContentView(relativeLayout); //        close.setOnClickListener(new View.OnClickListener() { //            @Override //            public void onClick(View view) { // //                dialog.dismiss(); //            } //        }); // //        delete.setOnClickListener(new View.OnClickListener() { //            @Override //            public void onClick(View view) { // //                int size = views.size(); //                files.remove(selectedPosition); //                if (listener != null) { //                    listener.onDelete(selectedPosition); //                } //                viewPager.removeView(views.remove(selectedPosition)); //                if (selectedPosition != size) { //                    int position = selectedPosition + 1; //                    String text = position + "/" + views.size(); //                    imageCount.setText(text); //                } //                adapter.notifyDataSetChanged(); //            } //        });          download.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View view) {                  SaveImageToGallery.saveImageToGallery(list_bitmap.get(selectedPosition));  //                SaveImageToGallery.saveImageToGallery(BitmapFactory.decodeFile(downloadFiles.get(selectedPosition).getPath()));             }         });          viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {             @Override             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {              }              @Override             public void onPageSelected(int position) {                 selectedPosition = position;                 String text = ++position + "/" + views.size();                 imageCount.setText(text);             }              @Override             public void onPageScrollStateChanged(int state) {              }         });     }      public void create() {         dialog.show();         views = new ArrayList<>();         adapter = new MyPagerAdapter(views, dialog);         if (status == URLS) {             for (final String url : urls) {                 FrameLayout frameLayout = (FrameLayout) activity.getLayoutInflater().inflate(R.layout.view_scale_image, null);                 final PhotoView imageView = (PhotoView) frameLayout.findViewById(R.id.img_pic);                 imageView.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() {                     @Override                     public void onPhotoTap(View view, float x, float y) {                          Log.e("--main--","");                          dialog.dismiss();                     }                 });                 views.add(frameLayout);                 IOThread.getSingleThread().execute(new Runnable() {                     @Override                     public void run() {                          /*File downLoadFile;                          try {                              downLoadFile = Glide.with(activity).load(url).downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).get();                             downloadFiles.add(downLoadFile);                          } catch (Exception e) {                             e.printStackTrace();                         }*/                          activity.runOnUiThread(new Runnable() {                             @Override                             public void run() {                                  imageView.setImageResource(R.mipmap.placeholder_figure);                                  Glide.with(activity)                                         .load(url)                                         .asBitmap()                                         .into(new SimpleTarget<Bitmap>() {                                             @Override                                             public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) {                                                  if (bitmap != null || !bitmap.isRecycled()){                                                      list_bitmap.add(bitmap);                                                 }                                                  imageView.setImageBitmap(bitmap);                                             }                                         });  //                                GlideLoader.getInstance().get(url,imageView);                             }                         });                     }                 });             }             viewPager.setAdapter(adapter);         } else if (status == FILES) {             for (File file : files) {                 FrameLayout frameLayout = (FrameLayout) activity.getLayoutInflater().inflate(R.layout.view_scale_image, null);                 PhotoView imageView = (PhotoView) frameLayout.findViewById(R.id.img_pic);                 views.add(frameLayout);                 imageView.setImageBitmap(BitmapFactory.decodeFile(file.getPath()));             }             viewPager.setAdapter(adapter);         }         viewPager.setCurrentItem(startPosition);     }      private static class MyPagerAdapter extends PagerAdapter {          private List<View> views;         private Dialog dialog;          MyPagerAdapter(List<View> views, Dialog dialog) {             this.views = views;             this.dialog = dialog;         }          @Override         public Object instantiateItem(ViewGroup container, int position) {             container.addView(views.get(position));             return views.get(position);         }          @Override         public void destroyItem(ViewGroup container, int position, Object object) {             if (position == 0 && views.size() == 0) {                 dialog.dismiss();                 return;             }             if (position == views.size()) {                 container.removeView(views.get(--position));             } else {                 container.removeView(views.get(position));             }         }          @Override         public int getCount() {             return views.size();         }          @Override         public boolean isViewFromObject(View view, Object object) {             return view == object;         }          @Override         public int getItemPosition(Object object) {             return POSITION_NONE;         }      }      public interface OnDeleteItemListener {         void onDelete(int position);     } }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!