簡體   English   中英

Android:從資源/可繪制文件夾訪問圖像

[英]Android: Accessing images from assets/drawable folders

我目前正在處理的應用程序有數百張圖片。 目前我將它們存儲在'Drawable'文件夾中。 我正在考慮將所有這些文件移到Assets文件夾中。

我的問題是:使用這兩種方法時性能是否有任何差異?

我不認為使用這兩個文件夾的性能有點差異 ,我認為使用drawable文件夾可以輕松獲得圖像(所有將在R文件中編入索引,這使得它更快(更容易!)到加載它們。),如果你想從資產中使用它,那么你必須使用AssetManager然后使用AssetFileDescriptor你必須得到那些圖像。

  • Assets也可以組織到文件夾層次結構中,資源不支持。 這是一種管理數據的不同方式。 雖然資源涵蓋了大多數情況,但資產偶爾會被使用。

  • res/drawable目錄中,每個文件都有一個預編譯的ID,可以通過R.id. [res id]輕松訪問。 這對於快速輕松地訪問圖像,聲音,圖標非常有用......

據我所知,應該沒有太大的區別,但我寧願選擇Drawable。

除了索引之外,Drawable還可以選擇與屏幕密度碎片作斗爭,資產不應該依賴於密度。 在較小的屏幕和/或較低規格的手機(RAM,CPU)上放置大圖片會導致真正的麻煩並影響可用性和應用響應度。

我認為這兩者之間的主要區別在於Drawable文件夾已編入索引並且您可以使用android 替代資源加載...所以我認為這些資源文件夾之間沒有性能差異。

實際上,我也遇到了問題。 我希望我的應用程序ImageView的圖像是從assets /而不是res / drawables加載的,這樣我就可以動態地從互聯網上更新我的APP。

從我的測試/感覺來看,如果你不注意,表現可能會非常不同。

         //v.setImageBitmap(ImageUtil.getBitmapFromAsset(this, "data/dog/dog_0001.png", 60, 60));
        //v.setImageDrawable(ImageUtil.getDrawableFromAsset(this, "data/dog/dog_0001.png"));
        v.setImageResource(R.drawable.dog_0001);

我的應用程序將在Activity的onCreate上面執行。 似乎證明setImageResource是最快的。

我的觀點是,從資產解碼需要時間來阻止UI線程,而設置資源ID比解碼更快。 我看到setImageResource中的代碼似乎也加載了圖像。 我不知道為什么我的解碼比setImageResource慢。 但我覺得setImageResource最快。 我試圖讓解碼異步解碼,然后設置位圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM