在檔案管理器中顯示圖片的縮圖和視訊第一幀的縮圖
- 首先在vender/mediatek/properties/packags/apps/FileManager/src/com/mediatek/filemanager/IconManager.java中匯入兩個類
import android.media.ThumbnailUtils; import android.provider.MediaStore.Video.Thumbnails;
- 在getIcon方法中新增
Bitmap icon=null;//方法已經定義,不需新增 //顯示圖片縮圖 if(mimeType.startsWith("image/")){ Bitmap bitmap=BitmapFactory.decodeFile(fileInfo.getFileAbsolutePath());//fileInfo.getFileAbsolutePath()方法得到檔案路徑的字串形式 icon=ThumbnailUtils.extractThumbnail(bitmap,96,96,ThumbnailUtils.OPTIONS_RECYCLE_INPUT); } //顯示視訊第一幀縮圖 if(mimeType.startsWith("video/")){ icon=ThumbnailUtils.createVideoThumbnail(fileInfo.getFileAbsolutePath(),Thumbnails.MICRO_KIND); } //針對HTML和HTM檔案字尾進行判別顯示相應的圖片 int iconId=getDrawableId(service,mimeType);//已經定義,無需新增 if(mimeType.startsWith("text/html")){ if(fileInfo.getFileAbsolutePath().endsWith("html")){ iconId=R.drawable.fm_html; } else{ iconId=R.drawable.fm_htm; } }
- 在不知道以上方法的時候,以下是載入圖片縮圖在網上找到的另外一種實現方式
private static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { final int height = options.outHeight; final int width = options.outWidth; int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { final int halfHeight = height / 2; final int halfWidth = width / 2; while ((halfHeight / inSampleSize) > reqHeight && (halfWidth / inSampleSize) > reqWidth) { inSampleSize *= 2; } } return inSampleSize; } // 如果是放大圖片,filter決定是否平滑,如果是縮小圖片,filter無影響 private static Bitmap createScaleBitmap(Bitmap src, int dstWidth, int dstHeight) { Bitmap dst = Bitmap.createScaledBitmap(src, dstWidth, dstHeight, false); if (src != dst) { // 如果沒有縮放,那麼不回收 src.recycle(); // 釋放Bitmap的native畫素陣列 } return dst; } // 從Resources中載入圖片 public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId, int reqWidth, int reqHeight) { final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(res, resId, options); // 讀取圖片長寬 options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); // 計算inSampleSize options.inJustDecodeBounds = false; Bitmap src = BitmapFactory.decodeResource(res, resId, options); // 載入一個稍大的縮圖 return createScaleBitmap(src, reqWidth, reqHeight); // 進一步得到目標大小的縮圖 } // 從sd卡上載入圖片 public static Bitmap decodeSampledBitmapFromFd(String pathName, int reqWidth, int reqHeight) { final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(pathName, options); options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); options.inJustDecodeBounds = false; Bitmap src = BitmapFactory.decodeFile(pathName, options); return createScaleBitmap(src, reqWidth, reqHeight); }
- 將以上方法新增到類IconManager中,同時在getIcon方法中新增呼叫以上方法的語句
if(mimeType.startsWith("image/")){ icon=decodeSampleBitmapFromFd(fileInfo.getFileabsolutePath(),96,96); }
- 此方法可以實現圖片縮圖的顯示,但是對圖片進行刪除操作時,會出現報錯,程式終止退出,報錯內容如下
- 通過報錯資訊我們可以發現錯誤出現在下面這句程式碼上,應該是在刪除圖片後,src為null,該方法不能解析空資源,會丟擲檔案找不到異常(FileNotFoundException)因此報錯
Bitmap dst = Bitmap.createScaledBitmap(src, dstWidth, dstHeight, false);
- 我的解決方法是對資源src進行判斷,如果資源為空則不進行資源解析,即不執行上面的程式碼,修改如下
private static Bitmap createScaleBitmap(Bitmap src, int dstWidth, int dstHeight) { Bitmap dst=null; if(src!=null){ dst = Bitmap.createScaledBitmap(src, dstWidth, dstHeight, false); } if (src != dst) { src.recycle(); } return dst; }
- 結果成功
相關推薦
在檔案管理器中顯示圖片的縮圖和視訊第一幀的縮圖
首先在vender/mediatek/properties/packags/apps/FileManager/src/com/mediatek/filemanager/IconManager.java中匯入兩個類import android.media.ThumbnailU
Android 載入本地圖片(檔案管理器中的圖片牆)
Android 載入本地圖片(檔案管理器中的圖片牆) --關於圖片牆的一些感悟與疑問,希望大家共同探討。 (By伊葉也) 圖片顯示及監聽 1、圖片顯示:基本上就5種顯示形式(如果同時嵌入5種形式,採用
刪除Win10檔案管理器中的文件音樂視訊OneDrive快速訪問等
一、刪除Win10檔案管理器中的文件/音樂/視訊等在Windows 10下開啟這臺電腦,除了會顯示磁碟碟符外,在資源管理器上半部分還會顯示6個資料夾,這6個資料夾就像6個核桃一樣,對一些人有用,對一些人沒有用。有些強迫症的童鞋表示不能忍受,下面介紹怎樣刪除這幾個資料夾。環境:Windows10專業版開啟登錄檔
ubuntu 18.04視訊檔案無法在檔案管理器中預覽的解決辦法
手動升級到18.04之後發現視訊的預覽無法載入 不知道為什麼 後來查了一下,發現瞭解決辦法 首先我們先安裝如下包 sudo apt install ffmpegthumbnailer 之後我們刪除一
linux 修改檔案管理器中 資料夾名稱
方法一: 首先修改現有主資料夾下各資料夾名稱: Desktop、 Documents、 Download、 Music、 Pictures、 Public、 Templates、 Videos …… 然後編輯配置檔案: vim ~/.config/user-dirs.di
如何在Ubuntu檔案管理器中檢視隱藏檔案和資料夾
Ubuntu檔案管理器 本文介紹如何在Ubuntu 18.04 LTS系統上檢視Ubuntu檔案瀏覽器中的隱藏檔案和資料夾。您可以從Ubuntu桌面上的“活動”檢視訪問檔案瀏覽器。 檢視隱藏內容的最簡單方法是在檔案瀏覽器開啟時使用Ctrl + h組合鍵。在下圖中,您可以看到現在顯示的所有隱藏內容:
Android視訊處理 --處理視訊第一幀縮圖
從API 8開始,新增了一個類: android.media.ThumbnailUtils這個類提供了3個靜態方法一個用來獲取視訊第一幀得到的Bitmap,2個對圖片進行縮略處理。 ? 1 public static Bitmap createVi
Android 獲取視訊第一幀縮圖
乾貨 從API 8開始,新增了一個類: android.media.ThumbnailUtils這個類提供了3個靜態方法一個用來獲取視訊第一幀得到的Bitmap,2個對圖片進行縮略處理。 public static Bitmap createVideoThumbna
Android -- 獲取視訊第一幀縮圖
從API 8開始,新增了一個類: android.media.ThumbnailUtils這個類提供了3個靜態方法一個用來獲取視訊第一幀得到的Bitmap,2個對圖片進行縮略處理。 public static Bitmap createVideoThumbnail (
讓檔案管理器識別某種型別的檔案並顯示相應型別的圖片
首先找到載入型別圖片的位置在vender/mediatek/properties/packags/apps/FileManager/src/com/mediatek/filemanager/FileI
獲取 window任務欄已經打開應用程序窗口(也就是任務管理器中前臺進程)的圖標
public name rgs ges pub 集合 icon pid 完整 獲取 window任務欄已經打開應用程序窗口(也就是任務管理器中前臺進程)的圖標 1.功能描述 獲取到window任務欄已經打開的應用程序的窗口圖標。如下:(要獲取到QQ,瀏覽器,文件夾的圖
如何刪除Windows10操作系統資源管理器中的下載、圖片、音樂、文檔、視頻、桌面、3D對象這7個文件夾
war reg ren 操作系統 esp 桌面 bcf pac cal 通過註冊表刪除,步驟如下: 1、按下win+R,輸入regedit,打開註冊表 2、找到位置:計算機\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr
eclipse增加工程檔案在windows資源管理器中開啟
方法有二: 一: 1.點選configurations,不同版本可能不一樣,大概就在這裡啦 2. 按截圖填寫即可,最後點選run,就開啟當前檔案所在的目錄啦 第二種方法: 安裝pathtools外掛, 外掛在http://code.google.com/p/path
Windows 檔案資源管理器中搜索帶特殊字元檔名的方法
今天處理一些檔案,資料夾這包含有類似《~$16年普通高等學校招生全國統一考試-英語》的檔名,想全部找出來刪除掉,直接在檔案資源管理器裡面輸入“~$”是搜尋不到想要的檔案的,這些是特殊字元,所以,就想是不是像程式設計一樣也有轉義符之類的,就進行網上搜索和測試,終於找到解決辦法,輸入~"*~$*"即可搜
C#如何在資源管理器中開啟資料夾並定位檔案
private void OpenFolderAndSelectFile(String fileFullName) { System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessSt
eclipse中檔案目錄快速定位,開啟檔案所在資料夾,在資源管理器中檢視
viewFile.bat (開啟選中的檔案獲取資料夾) Explorer/e,/select,%1 viewjava.bat (開啟選中的檔名對應的.java檔案) @echo off set calssdir=%1 set package=%2 set pack
Java實現視訊網站的視訊上傳、視訊轉碼、視訊關鍵幀抽圖, 及視訊播放功能 視訊網站中提供的線上視訊播放功能,播放的都是FLV格式的檔案,它是Flash動畫檔案,可通過Flash製作的播放器來播
package com.webapp.service; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.servlet.Serv
18、android中呼叫系統自帶檔案管理器並返回選中檔案的路徑
思路: 通過Android API呼叫系統自帶的檔案瀏覽器選取檔案獲得URI,然後將URI轉換成file,從而得到file。 import android.annotation.SuppressLint;import android.app.Activity;impo
vue檔案在sublime編輯器中顯示高亮
1.首先在sublime中安裝Package Control.sublime-package(地址:https://sublime.wbond.net/Package%20Control.sublime-package) 2.將檔案放在sublime中,注意:是放在Subl
android檔案管理器開發中遇到的一些問題
1.難點主要有如何獲取外掛裝置的資訊以及路徑無論是U盤還是TF卡等等 獲取方式在其他部落格中請自己檢視。 2.在Android6.0中想要對外部裝置進行的檔案的操作是比較難的 因為6.0中Android系統對外部儲存器操作的許可權進行了修改,所以只能進行讀操作,無法進行對外