`
superonion
  • 浏览: 127012 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

assets目录与res/raw、res/drawable目录的区别

阅读更多

assets目录与res下的raw、drawable目录一样,也可用来存放资源文件,但它们三者有区别,对比总结如下表:

 

 

  assets res/raw res/drawable
获取资源方式:   文件路径+文件名       R.raw.xxx        R.drawable.xxx   
是否被压缩: NO NO YES(失真压缩)
能否获取子目录下的资源: YES NO NO

 

 

 说明:

一、assets目录下的资源文件不会在R.java自动生成ID,所以读取assets目录下的文件必须指定文件的路径。可以通过AssetManager类来访问这些文件。比如要读取assets目录下的background.png:

	Bitmap bgImg = getImageFromAssetFile( "background.png" );  
	
	/**  
	 * 从assets中读取图片  
	 */  
	private Bitmap getImageFromAssetsFile(String fileName)  
	  {  
	      Bitmap image = null;  
	      AssetManager am = getResources().getAssets();  
	      try  
	      {  
	          InputStream is = am.open(fileName);  
	          image = BitmapFactory.decodeStream(is);  
	          is.close();  
	      }  
	      catch (IOException e)  
	      {  
	          e.printStackTrace();  
	      }   
	      return image;  
	  }  

 

二、如果在res/drawable目录下建了一个名为ppt的子目录,则通过 R.drawable.ppt.xxx 是获取不到ppt目录下的xxx文件的,会报 "R.layout.ppt cannot be resolved" 的错误。若在assets目录下建立一个名为ppt的子目录,并将background.png放入其中,则代码 Bitmap bgImg = getImageFromAssetFile( "ppt/background.png" );  可正常运行。

 

 

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics