Android工程项目结构

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"/>

猜你喜欢

转载自blog.csdn.net/watson2017/article/details/128095698