1.java是写代码的地方,我们的业务功能在此实现
2.res存放各种资源的地方。eg:图片,字符串,动画,音频,xml文件等
3.assets
/*获取assets目录下的网页资源*/
webView.loadUrl("file:///android_asset/html/index.htmll");
/*获取assets目录下的图片资源*/
InputStream
is=getAssets().open("wpics/0ZR424L-0.jpg");
Bitmap
bitmap=BitmapFactory.decodeStream(is);
imgShow.setImageBitmap(bitmap);
/**
*
从assets目录中复制整个文件夹内容
*
@param context Context 使用CopyFiles类的Activity
*
@param oldPath String 原文件路径 如:/aa
*
@param newPath String 复制后路径 如:xx:/bb/cc
*/
public
void
copyFilesFassets(Context context,String oldPath,String newPath) {
try
{
String
fileNames[] = context.getAssets().list(oldPath);//获取assets目录下的所有文件及目录名
if
(fileNames.length > 0)
{//如果是目录
File
file = new
File(newPath);
file.mkdirs();//如果文件夹不存在,则递归
for
(String fileName : fileNames) {
copyFilesFassets(context,oldPath
+ "/"
+ fileName,newPath+"/"+fileName);
}
}
else
{//如果是文件
InputStream
is = context.getAssets().open(oldPath);
FileOutputStream
fos = new
FileOutputStream(new
File(newPath));
byte[]
buffer = new
byte[1024];
int
byteCount=0;
while((byteCount=is.read(buffer))!=-1)
{//循环从输入流读取
buffer字节
fos.write(buffer,
0,
byteCount);//将读取的输入流写入到输出流
}
fos.flush();//刷新缓冲区
is.close();
fos.close();
}
}
catch
(Exception e) {
//
TODO Auto-generated catch block
e.printStackTrace();
//如果捕捉到错误则通知UI线程
MainActivity.handler.sendEmptyMessage(COPY_FALSE);
}
}
4.res与assets
1>res下所有的资源文件都会在R.java中生成对应的资源id,可通过R.xx.id来调用。(R可以理解为字典,在此生成唯一的id)
2>assets下所有的资源文件不会在R.java中生成对应的资源id,需要通过AssetManager以二进制流的方式来读取
4.1mipmap的目录,在Eclipse并不存在这个,Eclipse中都是drawable开头的,其实区别不大,只是使用mipmap会在图片缩放在提供一定的性能优化,分辨率不同系统会根据屏幕分辨率来选择hdpi,mdpi,xmdpi,xxhdpi下的对应图片,所以你解压别人的apk可以看到上述目录同一名称的图片,在四个文件夹下都有,只是大小和像素不一样而已!当然,这也不是绝对的,比如我们把所有的图片都丢在了drawable-hdpi下的话,即使手机 本该加载ldpi文件夹下的图片资源,但是ldpi下没有,那么加载的还会是hdpi下的图片! 另外,还有一种情况:比如是hdpi,mdpi目录下有,ldpi下没有,那么会加载mdpi中的资源! 原则是使用最接近的密度级别!另外如果你想禁止Android不跟随屏幕密度加载不同文件夹的资源,只需在AndroidManifest.xml文件中添加android:anyDensity="false"字段即可!
4.2图片资源
- drawable:存放各种位图文件,(.png,.jpg,.9png,.gif等)除此之外可能是一些其他的drawable类型的XML文件
- mipmap-hdpi:高分辨率,一般我们把图片丢这里
- mipmap-mdpi:中等分辨率,很少,除非兼容的的手机很旧
- mipmap-xhdpi:超高分辨率,手机屏幕材质越来越好,以后估计会慢慢往这里过渡
- mipmap-xxhdpi:超超高分辨率,这个在高端机上有所体现
- 4.3布局资源
- layout:该目录下存放的就是我们的布局文件,另外在一些特定的机型上,我们做屏幕适配,比如480*320这样的手机,我们会另外创建一套布局,就行:layout-480x320这样的文件夹!
- 4.4values目录
-
- demens.xml:定义尺寸资源
- string.xml:定义字符串资源
- styles.xml:定义样式资源
- colors.xml:定义颜色资源
- arrays.xml:定义数组资源
- attrs.xml:自定义控件时用的较多,自定义控件的属性!
- theme主题文件,和styles很相似,但是会对整个应用中的Actvitiy或指定Activity起作用,一般是改变窗口外观的!可在Java代码中通过setTheme使用,或者在Androidmanifest.xml中为<application...>添加theme的属性! PS:你可能看到过这样的values目录:values-w820dp,values-v11等,前者w代表平板设备,820dp代表屏幕宽度;而v11这样代表在API(11),即android 3.0后才会用到的!
-
4.5 raw目录
-
用于存放各种原生资源(音频,视频,一些XML文件等),我们可以通过openRawResource(int id)来获得资源的二进制流!和Assets差不多,但是这里面的资源会在R文件那里生成一个资源id;raw下不能建文件夹,但assets可以
-
获取raw下的资源InputStream is = getResources().openRawResource(R.id.filename);
-
4.6动画
-
动画有两种:属性动画和补间动画。animator:存放属性动画的XML文件;anim:存放补间动画的XML文件