先来简单说一下本文所要实现的功能:用户在浏览网页的时候,长按某一区域,识别如果是图片,则弹出弹框,出现保存图片的功能,同时识别图片是否是二维码,如果是则在弹框中追加识别二维码功能。
细节上:保存图片的弹框要显示在手指长按的位置;选择图片保存后,可以让用户直接去相册查看;选择识别二维码,判断是是不是网址,是的话可以让用户选择复制或访问,否则可以让用户选择复制或搜索。
然后再来看一下效果图:
<>强保存图片强>
@Override 公共布尔> setOnLongClickListener(新View.OnLongClickListener () { 公共布尔> 公共空间> GlideApp.with (appContext) .asFile () .load (url)。submit () . get ();
可以在长按识别出图片的时候就行预加载:
GlideApp.with (appContext) .asBitmap () .load (url) .preload ();
将图片保存在相册:
公共静态孔隙displayToGallery(上下文环境中,文件photoFile) { 如果(photoFile==null | | ! photoFile.exists ()) { 返回; } 字符串photoPath=photoFile.getAbsolutePath (); 字符串photoName=photoFile.getName ();//把文件插入到系统图库 尝试{ ContentResolver ContentResolver=context.getContentResolver (); MediaStore.Images.Media。insertImage (contentResolver photoPath photoName, null); }捕捉(FileNotFoundException e) { e.printStackTrace (); }//最后通知图库更新 上下文。sendBroadcast(新意图(意图。ACTION_MEDIA_SCANNER_SCAN_FILE, Uri。解析(“文件://? photoPath))); }
<>强识别图片中的二维码强>
显示弹框的同时还要判断图片是否包含二维码,这部分就是zx自带的功能,所以代码就不贴了。注意不应该等是zx判断是不是二维码后再显示弹框,因为这部分操作耗时可能比较长(见图二)。应当在识别二维码内容后再去更新弹框列表的内容。
总体来说这个功能实现注意的地方还是挺多的,好在都不复杂。当然本例还存在待优化的地方,以及实现更高级的功能,比如以图搜图,查看大图功能,也可以利用WebView。HitTestResult对获取到其他类型的内容进行处理,限于篇幅就不再展开了。
最后贴下本项目github地址,对WebView感兴趣的可以了解下:
github
以上所述是小编给大家介绍的Android WebView实现长按保存图片及长按识别二维码,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!