日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WebView实现长按保存图片 长按识别二维码,看完吊打面试官

發布時間:2024/3/24 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebView实现长按保存图片 长按识别二维码,看完吊打面试官 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

然后再來看一下效果圖:

保存圖片

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-xJCmIdzN-1630942827376)(https://user-gold-cdn.xitu.io/2018/1/11/160e418e435c50e9?imageslim)]

識別包含普通文字的二維碼:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-0XNmeBCs-1630942827378)(https://user-gold-cdn.xitu.io/2018/1/11/160e4812ed2b565a?imageslim)]

識別包含網址的二維碼:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-LQNB2XT9-1630942827379)(https://user-gold-cdn.xitu.io/2018/1/11/160e485ab8c9c071?imageslim)]

上述功能所用到的類和庫:

  • 獲得長按內容:WebView.HitTestResult
  • 彈框列表:DialogFragment
  • 圖片下載:Glide
  • 二維碼識別:Zxing

實現要點

記錄長按位置

繼承WebView記錄觸摸位置:

@Overridepublic boolean onInterceptTouchEvent(MotionEvent event) {touchX = (int) event.getRawX();touchY = (int) event.getRawY();return super.onInterceptTouchEvent(event);}

彈框我選擇DialogFragment而不是poupwindow的原因是poupwindow的顯示通常需要依托另一個View,而且在7.0以上有兼容問題。 判斷長按位置的內容類型是否是圖片:

獲取圖片信息

setOnLongClickListener(new View.OnLongClickListener() {public boolean onLongClick(View v) {WebView.HitTestResult result = getHitTestResult();if (null == result)return false;int type = result.getType();switch (type) {case WebView.HitTestResult.EDIT_TEXT_TYPE: // 選中的文字類型break;case WebView.HitTestResult.PHONE_TYPE: // 處理撥號break;case WebView.HitTestResult.EMAIL_TYPE: // 處理Emailbreak;case WebView.HitTestResult.GEO_TYPE: //  地圖類型break;case WebView.HitTestResult.SRC_ANCHOR_TYPE: // 超鏈接break;case WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE: // 帶有鏈接的圖片類型case WebView.HitTestResult.IMAGE_TYPE: // 處理長按圖片的菜單項String url = result.getExtra();if (mOnSelectItemListener != null && url != null && URLUtil.isValidUrl(url)) {mOnSelectItemListener.onSelected(touchX, touchY, result.getType(), url);}return true;case WebView.HitTestResult.UNKNOWN_TYPE: //未知break;}return false;}});

在手指長按位置處彈出彈框

HitTestResult是一個實體類,只記錄兩個信息:當選選擇內容的類型和內容的具體值。可以看到通過WebView.HitTestResult,我們可以獲得除了圖片外的很多內容類型。當然這里我們只需要判斷是否是圖片就好了,然后將長按位置和url一起回調給外層。在手指長按處顯示彈框,主要就是DialogFragment顯示位置的設定了:

public void onStart() {super.onStart();Dialog dialog = getDialog();if (dialog != null) {Window window = dialog.getWindow();if (window != null) {WindowManager.LayoutParams lp = window.getAttributes();window.setGravity(Gravity.LEFT | Gravity.TOP);lp.x = LocationX;//橫坐標位置lp.y = LocationY;//縱坐標位置 ## 推薦學習資料* Android進階學習全套手冊![](https://img-blog.csdnimg.cn/img_convert/950effc01c9cb7eb80e119b7e58fd187.png)* Android對標阿里P7學習視頻![](https://img-blog.csdnimg.cn/img_convert/0d3e2b1997ec04232722a60cc354849e.png)* BAT TMD大廠Android高頻面試題![](https://img-blog.csdnimg.cn/img_convert/e9996c073579a3ab270f11861262d61f.png)...(img-uqyPFRO0-1630942827383)]* BAT TMD大廠Android高頻面試題[外鏈圖片轉存中...(img-4XTZTH96-1630942827384)]**[CodeChina開源項目:《Android學習筆記總結+移動架構視頻+大廠面試真題+項目實戰源碼》](https://codechina.csdn.net/m0_60958482/android_p7)**

總結

以上是生活随笔為你收集整理的WebView实现长按保存图片 长按识别二维码,看完吊打面试官的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。