首先我是一个新手,自学Android几个月,先是看了《第一行代码》,第一版看完了之后才发现有第二版,就又把第二版新增加的一些内容看了。这本书个人感觉很适合初学者,能够较容易的看懂。接下来就自信满满的想要写出来一些功能强大,并且很实用的东西,但是真正开始写的时候才发现有些部分自己根本不知道该怎么写,即使百度出来人家的方法自己也看不懂。这才发现自己学的东西太少了,也就刚刚入了个门。于是,就又找了一些其它的书来看,(其实我也找过视频,但是大部分都太老了,有好多方法都被官方废弃了,所以但是没看视频,不过最近找着一个2017年录制的视频,不过内容不全,地址是点击打开链接)这次看的书是《Android群英传》,这本书在我看来比较难,整本书看完也是有些懂,有些不懂,有一定基础的可以看看。再后来自己写了个利用数据库的通讯录程序,但是写的太垃圾了。感觉最初的几个月好像什么都没学着,想要放弃,但是等心情平静下来之后又想再学学吧,就这个状态一直学到现在。看了好多关于如何学习Android的博客,都提到了要去公司里去学习,所以我也想过转行(我本专业是关于汽车的),去家做安卓的公司,但是无奈我们这城市太小了,根本没有做Android的公司。最后决定就把Android最为一个纯兴趣爱好吧。

接下来进入正题,首先实现加载网页我是利用WebView这个控件。代码如下:

webView = (WebView) findViewById(R.id.web_view);webView.getSettings().setJavaScriptEnabled(true);webView.setWebViewClient(new MyWebViewClient());webView.loadUrl(Address);

WebView的使用应该不用说了吧,其中MyWebViewClinent是我自己定义的类,下面会说他的作用。

接下来是获取图片,要获取图片就要获取图片的url,这就使用到了WebView与js的交互,代码如下:

   
webView = (WebView) findViewById(R.id.web_view);    webView.getSettings().setJavaScriptEnabled(true);    webView.addJavascriptInterface(new JsInterface(MainActivity.this), "imagelistner");    webView.setWebViewClient(new MyWebViewClient());    webView.loadUrl(Address);}public void addLocalJs() {    webView.loadUrl("javascript:(function(){ " + "var objs = document.getElementsByTagName(\"img\");"            + " var array=new Array(); " + " for(var j=0;j+ "array[j]=objs[j].src;" + " }  "            + "window.imagelistner.getImage(array);   })()");}private class JsInterface {    private Context context;    public JsInterface(Context context) {        this.context = context;    }    @JavascriptInterface    public void getImage(String[] urls) {        Log.i("chen", "========进入js方法========");        if (urls != null && urls.length > 0) {            for (int i = 0; i < urls.length; i++) {                Log.i("===" + i + "===", urls[i]);            }        }        List = urls;    }}class MyWebViewClient extends WebViewClient{    @Override    public void onPageFinished(WebView view, String url) {        view.getSettings().setJavaScriptEnabled(true);        super.onPageFinished(view, url);        Log.i("chen", "加载完成-----" + url);        view.getSettings().setBlockNetworkImage(false);        addLocalJs();    }}

这里面给WebView增加了一个接口addJavascriptInterface,接下来的addLocalJs()就是遍历网页,查找其中的图片,并把它的Url保存到数组中,然后打印出来获取到的所有图片的Url,并把保存Url的数组提取出来。最后就是我们自定义的类,它继承WebViewClinent并重写他的onPageFinished()方法,在网页加载完成之后调用addLocalJs()方法。(其实这段代码是我拷贝网上的,然后做了一点修改,具体的地址我也忘了)
图片的Url我们得到了,那么就要有个界面去展示这些图片,这里我是用的RecyclerView去展示,这个控件功能很强大,我感觉已经可以代替ListView,GrideView等了。
   
Bundle bundle = getIntent().getExtras();Fruit = bundle.getStringArray("list");recyclerView = (RecyclerView) findViewById(R.id.recycler_image);imageAdapter = new ImageAdapter(Fruit);recyclerView.setLayoutManager(new LinearLayoutManager(ImageLoadActivity.this));recyclerView.setAdapter(imageAdapter);
这里我们要接收在WebView中传过来的Url,然后再传到Adapter中去加载每张图片,最后把每张图片放到RecyclerView中,就把每张图片都显示出来了。适配器的代码就不贴了。图片预览也就是又单独的去加载了一张图片。不过要注意的是里面加载图片是用的Glide这个开源库,他使用起来很简单,具体使用方法看 https://github.com/bumptech/glide
项目完整代码请看https://github.com/SZJing/ImageDonwload
   

更多相关文章

  1. Android(安卓)微信支付快速集成案例及有效解决返回值-1
  2. android上传图片并附带上传数据,文件流
  3. 项目总结之Android读取office文件遇到的坑
  4. 图片、缓存-Android仿人人客户端(v5.7.1)——对从服务器端(网络)获取
  5. 程序猿的技术博客Android客户端--博客园篇
  6. Android应用开发笔记(4):再探Android多应用间数据共享机制,自定义C
  7. Android(安卓)换肤方案(2种)
  8. Android的自定义图片按钮ImageButton【第一篇】
  9. 让你的代码量减少3倍!使用kotlin开发Android(二) --秘笈!扩展函数

随机推荐

  1. Android IMF 分析
  2. Android 蓝牙浅析
  3. Android SDK的安装与环境变量配置
  4. appium 并发测试
  5. 备忘---Android(安卓)Permission
  6. Android(安卓)View与SurfaceView的手绘板
  7. Android调用系统前置相机拍照
  8. android 模拟2048
  9. android 中EditView输入电话号码(3+4+4格
  10. 【IMOOC学习笔记】多种多样的App主界面Ta