安卓各种资源介绍及使用方法以及工程各文件夹的介绍

新建一个项目工程后主要有四个文件夹或文件.

一.  src文件夹(源代码目录)。这个文件夹主要是放我们所建立的包下的各个应用程序的源文件,开发android大部分程序基本上与这个文件夹下和res目录下的xml打交道

二.            gen文件夹(自动生成目录)。这个目录下最关键的文件就是R.java。这个文件每个人都不应当手动的修改。当我们在xml描述文件 图像,字符串,界面组件,标示符id,就会同步更新到R.java。当然当我们想调用某个字符串或图像直接写R.String 字符串名字 即可。

三.            res文件夹(资源文件夹)。这个文件夹下有五个文件夹。前三个是主要是放资源的文件夹。例如图像,图标,声音都可以放在这三个文件夹下。values 参数值目录,这个目录包含XML参数文件的描述,可以在此添加一些字符串,颜色,风格等等。Layout页面布局目录,用来描述页面的编排与界面组件。

在values 文件夹名字如果改为 values-en 表示安卓操作系统使用英语 就会从这个文件加下 读取字符串文件 values-zh-rCN 表示简体中文 values-zh-rTW表示繁体values-en-rUS 美式英语

values-en-rUK英式英语values-en-ja 日文

如果没有指定的话 安卓操作系统就默认的使用values 这个文件夹下的字符串文件

四.            AndroidManifest.xml 文件android功能列表文件。这个功能列表就像一台计算机的注册表文件差不多。但我们编写一个应用程序,所需要的类库,运行时的类,activity 服务等都会在此注册,列出来

 

 

文件描述

<?xml version="1.0"encoding="utf-8"?>/*表示该文件是个描述性文件*/

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"//LinearLayout 表示界面组件一个一个自上而下的排下来是一个线性布局// xmlns:android="http://schemas.android.com/apk/res/android"这是个页面标签描述空间这个一般不会编

    android:layout_width="fill_parent"//android表示组件前缀设置其组件宽度 "fill_parent"表示填满上层组件

    android:layout_height="fill_parent"

    android:orientation="vertical">//orientation 页面走向属性,"vertical" 垂直,表示自上而下垂直的排列其包含的界面组件

//其他的布局方式有 FrameLayout(框架页面布局)TableLayout(表格页面布局)AbsoluteLayout(绝对位置页面布局) RelativeLayout(相对位置页面布局)

    <TextView//文字标签

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"//随着文字的长度行数更改组件的高度

        android:text="@string/hello"/>//android:text="@string/hello 给textView组件赋一个值

 

</LinearLayout>

 

 

Mainfest 文件安桌的列表编辑器相当于系统的注册表

<?xml version="1.0"encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.demo.android.bmi"//应用程序的包名

    android:versionCode="1"//开发者内部的版本号

    android:versionName="1.0">//发给用户的版本号

    <uses-sdk android:minSdkVersion="7"/>//应用程序的最低支持的sdk

 

    <application

        android:icon="@drawable/ic_launcher"//索引的图标在系统的位置

        android:label="@string/app_name">//应用程序的名字就是在安装到手机上的名字

        <activity

            android:label="@string/app_name"//这个是一个activity 的名字

            android:name=".BMIActivity">//默认启动的Activity

            <intent-filter >

                <action android:name="android.intent.action.MAIN" />//相当于main程序

 

                <category android:name="android.intent.category.LAUNCHER" />//这个是表示放到手机应用程序的列表里

            </intent-filter>

        </activity>

    </application>

 

</manifest>

 

 

 

 

 

一、安卓支持的资源种类

1.   字符串资源

2.      数组

3.      颜色

4.      尺寸

5.      类型

6.      主题

7.      绘画

8.      动画

9.      菜单

10.  布局

11.  属性

12.  XML

13.  RAW

14.  ASSETS

二、各资源所在的文件夹

1.   values文件夹放入的资源

字符串颜色尺寸类型主题数组属性

对以字符串颜色尺寸以key-values保存其他的一其他形式保存名字自己任意取.xml结尾即可

2.   layout 文件夹

保存的是布局文件一个布局文件是一个View 或者ViewGroup的布局文件名任意取.xml结尾

3.   menu 文件夹

保存一个菜单资源一个文件表示一个菜单包括子菜单名字任意取.xml结尾

4.   anim文件夹 

保存的是动画资源可以定义动画帧(frame也可以补间动画(tween名字任意取.xml结尾

5.   xml文件夹

保存任意类型的xml文件资源在运行时可以被读取

6.   drawable 文件夹

保存的是图像资源保存的格式常用的有 bmp png gif jpg 文件名必须是英文或数字组成如果要以字节流输出图像要把图像资源放到raw文件夹下

7.   raw文件夹

可以保存任何类型的文件但是不会被编译但是会被封装到apk

8.   assets 文件夹

可以存放任何文件也不会被编译但是里面的文件不会生成资源文件的id也就是说在R文件里不能使用R.什么什么的形式但是会封装到apk

三、各种资源的定义形式

1.字符串资源

<string name=”字符串的变量名”> 字符串的值</string>

值得注意的是如果字符串的值有单引号或者双引号则需要转换

单引号则在外面包上一层双引号如“abc’def则值是abc’def

如果是双引号则需要转义这个和java一样\”abcd\” 则输出“abcd

字符串资源的值还可以支持占位符形式如下

今天是%1$s,当前温度是:%2$d

这个意思的含义是%1 %2 表示参数的索引位置后面$的后面s表示的是字符串可以代替那个位置 d表示是数字可以代替那个位置

例如如果上面的那个字符串的name stringname

一个textview.setTextgetStringR.string.stringname,“星期一”,20))

则会输出 今天是星期一当前温度是20

2.数组资源

<数组类型-array name=”数组的名字”>

<item>

数组元素的值

</item>

<item>

数组元素的值

</item>

………….

3.颜色资源

<color name=”颜色的变量名”> #颜色值</color>

注意颜色值的表示形式有四种表示法

1.   RGB形式#000表示黑色

2.   ARGB形式 A表示透明度A=0完全透明如#0000表示透明黑色

3.   RRGGBB 第一种的扩展

4.   AARRGGBB 第二种的扩展

最后要指出的是颜色值必须以#开头后面跟着16进制的数

4.尺寸资源

 <dimen name=”所定义尺寸的名字”> 尺寸的大小</dimen>

 值得注意的是尺寸的大小的单位有如下形式

1.   px 表示屏幕的实际像素

2.   in 表示屏幕的实际物理英寸一英寸等于2.54厘米

3.   mm 表示毫米屏幕的实际物理尺寸

4.   pt 表示一个点屏幕的物理尺寸大小是1/72 英寸

5.   dp 表示一个与密度无关的像素比较复杂他的单位不仅仅与实际屏幕大小有关还与分辨率有关这个单位最为常用安卓官方建议的

6.   sp 表示与比例无关的像素dp类似但是除了适应屏幕密度外还适合用户的字体安卓官方建议在设置textSize的时候使用该单位

5.类型资源(众多组件的属性要用同一个值)

<style name=”类型的变量”>

<item name=”这里面设置属性”>属性值</item>

<item name=”这里面设置属性”>属性值</item>

</style>

<style name=”类型的变量” parent=”上面那个style名字” >

<item name=”这里面设置属性”>属性值</item>

<item name=”这里面设置属性”>属性值</item>

</style>

值得注意的有上面设置属性的值指得是安卓内部设置组件的属性比如说androidgravity androidtextSize等等属性。后面的属性值当然也像布局文件那样指定另外类型可以继承只需要指明parent=“继承的所存在的类型名字“

6.主题资源

与类型资源形式几乎一样但是这种类型只能用于<Activity><application>标签用在application标签表示改类型所有的Activity都被使用

7.绘画资源

这种资源直接复制到drawable文件夹下会自动生成id 但是名字不能含有中文以及扩展名不同文件名不同的文件此外还可以放一种特殊的文件改文件必须以9.png结尾该文件用于边框当图像放大或者缩小这种图像边框的粗细保持不变

还有一种支持绘画颜色的drawable资源values的文件夹中定义一个资源文件

<drawablename=”绘画颜色资源名称”>绘画颜色资源值</drawable>

8.动画资源

<animation-listxmlns:android=http://schemas.android.com/apk/res/androidandroidonesshot=false>

<itemandroid:drawable=@/drawable/图像资源的名称“ androidduration=50/>

<itemandroid:drawable=@/drawable/图像资源的名称“ androidduration=50/>

<itemandroid:drawable=@/drawable/图像资源的名称“ androidduration=50/>

</animation-list>

onesshot=false“是个可选的属性其他的属性必须有表示是否循环播放默认的是false androidduration 指定每个图像的停留时间其他的属性

9.菜单资源

<menu 命名空间>

<item  设置的属性   />

 <item 设置的属性  />

<group id>

     <item 设置的属性  />

<item  设置的属性   />

<item  设置的属性   >

   <menu>

            <item  设置的属性   />

             <item  设置的属性   />

             <group id>

                 <item  设置的属性   />

<item  设置的属性   />

                       </group>

                  </item>

</group>

</menu>

上面是一个完整的菜单方式根据要求可以删减比如说不需要设置子菜单项中间那个 menu的标签就不需要的 有的需要组也可以删去但是item内不可以有item

值得注意的是命名空间可以是安卓默认的也可以是自己定义的设置的属性主要是菜单的属性与在布局文件定义类似

Menu 标签没有任何属性除了第一个跟标签需要命名空间其他的不要当然菜单资源的文件要以<menu> 为跟标签不是以<resource>

Item的属性如下

id 菜单项的id

   menuCategory 菜单项的种类如设置成system 表示系统菜单放在其他的后面

   orderInCategory 同种类菜单排列顺序

   title 菜单项的显示文本

   titleCondensed 菜单项的短标题如果菜单项文本太长会显示该值

   icon 菜单项图片的id

  alphabeticShortCut 菜单项的字母快捷键

   numericShortCut 菜单项数字快捷键

   checkable 菜单项是否带复选框

   checked 如果菜单项带复选框表示该复选框是否被默认选中

   visible 菜单项是否可见

   enabled 菜单项是否可用

group的属性如下

   id 菜单组的id

   menuCategory item相同只是作用域在菜单组

  orderInCategory  item相同只是作用域在菜单组

visible 菜单组里的所有菜单项是否可见

enable 菜单组里所有菜单是否可用

 CheckableBehavior 设置该菜单组上显示的选择组件如果为all 显示checkbox

如果为single 显示Radio Button 如果为none 正常显示菜单不会显示选择组件(checkbox  Radio Button

10.  布局资源

      layout文件里放入一个xml文件该文件显示符合安卓的组件文件包括view或者viewgroup

11.  属性资源(众多属性集中一起)

<attr name=”属性名字” format=“属性值限定的字符串“>

<定义全局的属性>

  </attr>

<declare-styleable name=”组件名称

<attr name=”属性名字” format=“属性值限定的字符串“/>

< attr name=”全局定义的属性名称”/>

</ declare-styleable >

值得注意的是定义属性需要定义自己的命名空间原则上命名空间可以随便取但是也有一定规则命名空间必须以http://schemas.android.com/apk/res/开头后面是所要引用的R文件所在的路径也就是包名   属性值限定的字符串的意思是属性的取值限定的类型reference 引用资源id类型 string float 等等最后要在所要引用该属性的布局文件中加上自己的命名空间

12.  Xml资源

13.  RAW资源

14.  assets资源

12-14都是直接把文件拷到相应的目录里没有什么特别的格式只是在代码引用的方式不一样)

四、各资源在代码以及布局引用方式

1.字符串资源

代码R.string.字符串的名字

 布局@string/字符串的名字

2.数组资源

  代码:String[]abc=getResource().getStringArray(R.array.数组名字)

          其中红色部分是你在资源文件定义的数组类型

    布局:布局文件不引用数组类型的资源

3.颜色资源

  代码:假如一个组件TextViewtextView

           设置颜色textView.setTextColor(getResource().getColor(R.color.颜色名字))  textView.setBackgroundResource(R.color.颜色名称) 等等也就是说传进去的参数是一个颜色资源id就行

布局:@color/颜色名称

4.尺寸资源

代码:float dimension= getResources().getDimension(R.dimen.尺寸名称)

布局:@dimen/尺寸名称

5.类型资源

代码:R.style.类型名称

布局:在每个组件内部的属性设置里 style=@/style/类型名称“

6.主题资源

代码:R.style.类型名称

布局:在Mainfest文件里的<application>标签里添加androidtheme=@style/主题名称“或者在activity的标签也可以

7.绘画资源

代码:Drawabledrawable=getResources().getDrawable(R.drawable.资源名称)

值得注意的是虽然返回的都是Drawable对象但是其实是如果是图像文件返回的是BitmapDrawable对象9.png图像指向的是NinePatchDrawable对象如果是绘画颜色资源指向的是PaintDrawable对象

布局:@drawable/资源名称  是图像或者绘画颜色值都可以

8.动画资源

代码:有几种形式

1.   AnimationDrawable animationDrawable=AnimationDrawablegetResources().getDrawable(R.anim.文件名称)

2.   ImageView imageView=(ImageView)findViewById(R.id.图像组件的id)

imageView.setBackgroundResourcesR.anim.文件名称)//设置ImageView的背景图

Objectbackground=imageView.getBackground()

AnimationDrawableanimationDrawable=AnimationDrawablebackground

布局:不能使用动画资源

9.菜单资源

代码:在onCreateOptionsMenu(Menu menu) 或者 onCreteContextMenu()的回调方法里装载资源文件

MenuInflatermenuinflater=getMenuInflater()

menuinflater.inflateR.menu.菜单资源文件的名称)

如果是onCreteContextMenu要在onCreate()方法里将上下文菜单注册到某个组件上

registerForContextMenu(某个组件的名称)

布局:布局文件不可以使用

10.         布局资源

代码:R.layout.布局文件的名称

布局:不可以嵌套使用

11.         属性资源

 代码:AttributeSet的一个对象先有假设是attrs

//获得属性数组对象

  TypedArray typedArray=Context.obtainStyledAttributesattsR.styleable.组件名称)

//获得<declare-styleable>标签下的属性值

resourceid= typedArray.getResourceIdR.styleable.组件名称_属性名称,属性不存在返回的值)

布局:在视图的布局文件加入命名空间app 那么引用的就是app:属性名称=“属性值”

12.         xml资源

代码:XmlResourceParserxml=getResources().getXml(R.xml.xml的文件名称)

布局:不可以使用

13.         Raw资源

InputStream read= getResources().openRawResourceR.raw.文件名称)

OutputStream write= getResources().openRawResourceR.raw.文件名称)

布局:不可以使用

14.         assets资源

代码:InputStreamread=getAssets().open(“文件的名称“)//如果assets下还有个文件目录也要把目录名写上用 / 隔开abc/a.txt

OutputStreamwrite=getAssets().open(“文件的名称“)

布局:不可以使用

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值