Android工程项目结构:
- java:Java代码,业务功能都在这里实现
- res:存放各种资源文件,如图片,字符串,动画,音频等,还有各种形式的XML文件
- - drawable:存放的是各种位图文件,还有一些其他的drawable类型的xml文件。
- - layout:存放App的布局文件。
- - mipmap:存放位图文件,同时为图片缩放提供一定优化。
- - value:其中colors.xml中定义的颜色资源;strings.xml中定义的字符串资源;styles.xml中定义的是样式资源。
mipmap的目录,在Eclipse并不存在这个,Eclipse中都是drawable开头的,其实区别不大,只是使用mipmap会在图片缩放时提供一定的性能优化,不同分辨率的系统会根据屏幕分辨率来选择hdpi,mdpi,xmdpi,xxhdpi下的对应图片。
如果把所有的图片都放在了drawable-hdpi下的话,即使手机本该加载ldpi文件夹下的图片资源,但是ldpi下没有,那么加载的还会是hdpi下的图片。如果是hdpi,mdpi目录下有,ldpi下没有,那么会加载mdpi中的资源,原则是使用最接近的密度级别,如果想禁止Android不跟随屏幕密度加载不同文件夹的资源,只需在AndroidManifest.xml文件中添加android:anyDensity="false"字段即可。
图片资源:
- drawable:存放各种位图文件,(.png,.jpg,.9png,.gif等) 除此之外可能是一些其他的drawable类型的XML文件
- mipmap-hdpi:高分辨率,一般我们把图片丢这里
- mipmap-mdpi:中等分辨率,很少,除非兼容的的手机很旧
- mipmap-xhdpi:超高分辨率,手机屏幕材质越来越好,以后估计会慢慢往这里过渡。
- mipmap-xxhdpi:超超高分辨率,这个在高端机上有所体现。
布局资源:
- layout:该目录下存放的是布局文件,另外在一些特定的机型上,做屏幕适配会另外创建一套布局,比如480*320这样的手机,对应layout-480x320这样的文件夹。
菜单资源:
- menu:在以前有物理菜单按钮,即menu键的手机上,用的较多,现在用的并不多,菜单项相关的资源xml可在这里编写。
values目录:
- dimens.xml:定义尺寸资源
- string.xml:定义字符串资源
- styles.xml:定义样式资源
- colors.xml:定义颜色资源
- arrays.xml:定义数组资源
- attrs.xml:自定义控件时用的较多,自定义控件的属性
- theme主题文件,和styles很相似,但是会对整个应用中的Actvitiy或指定Activity起作用,一般是改变窗口外观的,可在Java代码中通过setTheme使用,或者在Androidmanifest.xml中为添加theme的属性。
dimens.xml:
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>
colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
</resources>
string.xml:
<resources>
<string name="app_name">Demo</string>
<string name="title_home">Home</string>
<string name="title_dashboard">Dashboard</string>
<string name="title_notifications">Notifications</string>
</resources>
raw目录:
用于存放各种原生资源(音频,视频,一些XML文件等),我们可以通过openRawResource(int id)来获得资源的二进制流,其实和Assets差不多,不过这里面的资源会在R文件那里生成一个资源id。
动画:
- animator:存放属性动画的XML文件
- anim:存放补间动画的XML文件
资源使用:
Java代码中使用:
//文字:
txtName.setText(getResources().getText(R.string.name));
//图片:
imgIcon.setBackgroundDrawableResource(R.drawable.icon);
//颜色:
txtName.setTextColor(getResouces().getColor(R.color.red));
//布局:
setContentView(R.layout.main);
//控件:
txtName = (TextView)findViewById(R.id.txt_name);
XML代码中使用:
<TextView
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background = "@drawable/img_back"/>