目录

一、values文件:存放字符串(strings)、颜色(colors)、尺寸(dimens)、数组(arrays)、样式(styles类似于CSS文件)、类型等资源

二、drawable:存放图片文件,if条件设置的颜色、图片XML文件

三、layout:存放布局文件(bmp、png、gif、jpg)

1、控件

Button:按钮控件

TextView:文本控件,用来显示文本

EditText:文本输入(编辑)框

ImageView:显示图片控件

ProgressBar:加载数据进度条

CheckBox:复选框

RadioGroup

RadioButton:单选框,俩个条件让其保持单选效果:1、需要放在同一RadioGroup里面 2、XML文件里设置id属性

Spinner:下拉框

SeekBar:进度条,ProgressBar的优化版

SearchView:搜索框

ProgressDialog:进度条对话框

(重点)ListView:列表控件,不同于上面其它控件,格式为:

2、布局

3、XML引入自定义布局

四、anim:存放动画文件

五、minmap:存放系统资源文件

六、raw:存放任意类型文件,一般存放比较大的音频视频,图片或文档。会在R类中生成资源id,封装在APK中

七、assets:存放任意类型文件,不会被编译。与raw相比,不会在R类中生成资源id


使用示例:

colors**文件**

<resources>
<color **name=颜色**id”>颜色十六进制数值</color>
</resources>

strings**文件**

1
2
3
4
5
 <resources>

    <string name="字符串id">字符串值</string>

</resources>

dimens**文件:设置图片尺寸dp**和字体尺寸sp

1
2
3
<resources>

    <dimen name="尺寸id">尺寸值</dimen>
1
2
3
4
5
 <dimen name="main_tab_h">80dp</dimen> 设置图片时用dp

<dimen name="main_tab_tsize">22sp</dimen> 设置字体大小时用sp

</resources>

arrays**文件**

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 <resources>

    <string-array name="字符串数组id">

        <item>字符串1</item>

        <item>字符串2</item>

    </string-array>

    <integer-array name="int数组id" translatable="false">

        <item>int值1</item>

        <item> int值2</item>

    </integer-array>

    <array name="字符串数组id或int数组id">

        <item>字符串1或int值1</item>

        <item>字符串2或int值2</item>

    </array>

</resources>

styles**文件**

<resources>

1
     <style name="样式id">
1
2
3
4
5
     <item name="控件属性">控件属性值</item>

        <item name="android:layout_width">wrap_content</item>

        <item name="android:layout_height">wrap_content</item>
1
2
3
 </style>

</resources>

1、在XML文件中使用上述资源(@标签类型/id值):

1
2
3
4
5
6
7
8
9
10
11
<Spinner

    android:id="@+id/spinner1"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:entries="@array/languages"

    />

2、在Java代码里获取资源

color颜色资源

R.color.id值

dimen字体资源

float myDimen = getResources().getDimension(R.dimen.id值);

string字符串资源

Resources.getString()Resources.getText()

array数组资源:

1
                     String[] languages= getResources().getStringArray( R.array.languages );
1
                     int[] increase= getResources().getIntArray( R.array.increase );

二、drawable:存放图片文件,if条件设置的颜色、图片XML文件

Selector标签:只能在drawable里的XML文件使用(即drawable类型的资源文件),一个

XML文件存放一个selector相当于XML文件的if语句, item的状态判断是

由上而下进行判断的,一旦匹配到该状态,那么之后的状态就不再进行匹配。

<item

android:color=”@color/id值” //颜色值,#RGB,$ARGB,#RRGGBB,#AARRGGBB

android:drawable=”@drawable/id值” //图片

android:state_pressed=[“true” | “false”]//是否触摸

android:state_focused=[“true” | “false”]//是否获得焦点

android:state_selected=[“true” | “false”]//是否被selected选中状态

android:state_checkable=[“true” | “false”]//是否可选

android:state_checked=[“true” | “false”]//是否被checked选中状态

android:state_enabled=[“true” | “false”]//是否可用

android:state_window_focused=[“true” | “false”] />//是否窗口聚焦

里的的属性即为判断条件,可多个属性共同组成判断条件,如下:

示例:test文件存放了如下

1
2
3
4
5
6
7
 <selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:color="@color/colorPrimary"      android:state_checked="false"/>

    <item android:color="@color/colorAccent"  android:state_checked="true"/>

</selector>
1
       image_selector文件如下<selector>
1
2
3
4
5
6
7
 <selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/ic_launcher_background" android:state_pressed="true"></item>

    <item android:drawable="@drawable/cardview" android:state_pressed="false"></item>

</selector>
1

使用:只有XML文件里的属性是设置为颜色、图片的属性才能使用selector文件

在CheckBox判断是否选中设置颜色
android**:textColor=**”@drawable/test”

1
2
3
       在Button上判断是否点击设置背景图片

android:background="@drawable/image_selector"
1
2
3
       在RadioButton上判断是否选中显示图片

android:drawableTop="@drawable/image_selector"
1

1

三、layout:存放布局文件(bmp、png、gif、jpg)

1、控件

1、每个控件都有id,长,宽,即在XML代码中都有android:id属性和android:layout_width属性和

android:layout_heigh属性

定义id:android:id=”@+id/id名”

引用id:android:od=”@id/id名”

android:layout_width和android:layout_heigh有俩种可选值:match_parent(与父布局大小一致)和

wrap_content(大小刚好包住内容)

2、控件代码都是<控件名 属性1、属性2、…. />,属性值都用””包含

3、所有控件都有android:visibility属性

android:visibility:设置控件显示状态。可选值:visible(可见),invisible(隐藏仍占用屏幕),gone(消失且不占屏幕)

后台逻辑操控属性方法:

setVisibility():可传入View.VISIBLE、View.INVISIBLE,View.GONE

4、 android:gravity:指定文字对齐方式

android:layout_gravity:指定控件在布局对齐方式

android:layout_weight:先按控件尺寸分配屏幕,再按layout_weight比例进行分配

如:布局有俩个按钮,一个按钮layout_weight属性为1,另一按钮未设置该属性,则

未设置按钮分配完基本尺寸后,剩余空间都为另一个按钮所占,此时比例为1/1.

若设置了为1,则俩按钮平分布局空间

android:weightSum:设置layout_weight的总比例值,一般在父布局(即上一层控件)中设置

5、较常用属性;

1
2
>  drawableTop、drawableBottom、drawableLeft、drawableRight:在view上边、下边、左边、右边添加一个drawable属性
>
1
2
>  drawablePadding:设置view里drawable的内边距
>
1
2
>  paddingLeft、paddingRight、paddingTop、paddingBottom:设置左右上下的内边距
>
1
2
>  background/src:设置背景图片、
>
1
2
>  checked:是否选中
>
1
2
>  text:设置文本
>
1
2
>  textSize:设置文本字体大小
>
1
2
>  gravity:设置内部文字对齐方式,可选值:center_horizontal、center_vertical、 center、top、bottom、left、right、start、end、clip_horizontal、clip_vertical、fill、fill_horizontal、fill_vertical
>
1
2
>  layout_gravity:设置当前view在上一view的对齐方式,可选值:center_horizontal、center_vertical、 center、top、bottom、left、right、start、end、clip_horizontal、clip_vertical、fill、fill_horizontal、fill_verti 大专栏  res文件夹及xml资源文件详解cal
>
1
2
>  orientation:设置排列方式horizontal水平方向、vertical垂直方向
>
1
2
>  textColor:设置文字颜色,可设置
>
1
2
>  style:设置通用样式属性,引用styles.xml里的<style>里的name属性值,如:@style/name属性值
>

Button:按钮控件

XML属性可自行查询文档,这里主要讲后台逻辑部分

当获取到布局文件中的元素(通过Button,findViewById(R.id.id名))后,按钮的触发事件添加方式有俩钟。

第一种:单个按钮时使用,直接调用。如:

button.setOnClickListener(new OnClickListener(){

public void onClick(View v){

//添加触发事件逻辑

}

});

第二种:多个按钮时使用

One:使当前类继承OnClickListener接口(implements OnClickListener)

Two:若有多个按钮,都设置当前类为监听类。button.setOnClickListener(this);

Three:在当前类重写onClick(View v)。

public void onClick(View v){ //View指的是点击按钮,根据不同按钮id不同设置不同触发代码

switch(v.getId()) {
case R.id.button1:Toast.makeText(this, “按钮1”, Toast.LENGTH_SHORT).show();break;
case R.id.button2:Toast.makeText(this, “按钮2”, Toast.LENGTH_SHORT).show();break;

default:break;

}

}

第三种:在类里定义一个方法(方法有俩个要求:参数为View类型,和必须为public权限),然后在XML文件

里android:onClick属性设置为方法名

Switch:开关按钮

属性:

textOn:控件打开时显示的文字
textOff:控件关闭时显示的文字
thumb:控件开关的图片
track:控件开关的轨迹图片
typeface:设置字体类型
switchMinWidth:开关最小宽度
switchPadding:设置开关 与文字的空白距离
switchTextAppearance:设置文本的风格
checked:设置初始选中状态
splitTrack:是否设置一个间隙,让滑块与底部图片分隔(API 21及以上)
showText:设置是否显示开关上的文字(API 21及以上)

方法;

1
2
>  setShowText(boolean):设置是否显示文本
>
1
2
>  setChecked(boolean):设置开关是否打开
>
1
2
>  setText(String):设置显示文本
>
1
2
>  isChecked():判断是否打开
>
1
2
3
4
5
6
7
8
>  setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
//Switch控件状态改变监听方法
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//isChecked为当前Swicth控件的状态
}
} );
>

TextView:文本控件,用来显示文本

属性:

android:text:显示文本内容

android:gravity:指定文字对齐方式(top,bttom,left,right,center),可用”|”来指定多个值,如:”center_vertical |

center_horizontal”来表示文字在水平和垂直方向都居中

android:textSize:指定文字大小,单位sp

android:textColor:指定文字颜色,可用16进制数或英文

EditText:文本输入(编辑)框

属性:

android:hint:设置未输入时显示内容,输入时小时

android:maxLines:设置输入时最大行数,避免内容过多导致控件变形

android:inputType:可设置为textPassword将文本框变为密码框

方法:

getText().toString():获得String形式文本

如:EditText editText=(EditText)findViewById(R.id.id名);

editText.getText().toString();

ImageView:显示图片控件

属性:

android:src:设置显示图片,如:android:src=”@drawable/图片名”

scaleType:让图片铺满ImageView

方法:

setImageResource(R.drawable.图片名):设置显示图片

ProgressBar:加载数据进度条

属性:

(style=”?android:attr/progressBarStyleHorizontal”):指定成水平进度条

android:max:指定进度条最大值

后台:

progressBar(进度条类)和progress(进度类)配合使用,如:

progress=progressBar.getProgress();

progress+=10;

progressBar.setProgress(progress);

AlertDialog.Builder:在当前界面弹出警告对话框

后台:

setTitle(String):设置警告对话框标题

setMessage(String):设置警告对话框信息(内容)

setCancelable(true/false):设置警告对话框是否可取消

//设置确定键

setPositiveButton(String,new DialogInterface.OnClickListen(){

public void onClick(DialogInterface,int which){

}

});

//设置取消键

setNegativeButton(String,new DialogInterface.OnClickListen(){

public void onClick(DialogInterface,int which){

}

});

show():显示警告对话框

CheckBox:复选框

属性

android:text:设置复选框后的文本

android:checked;设置是否选中

方法

isChecked():判断选项是否被选中

getText():获取复选框按钮的文本内容

RadioGroup

方法

1
2
3
4
5
6
7
8
9
>  RadioGroup.getCheckedRadioButtonId ();--获取选中按钮的id
3 RadioGroup.clearCheck ();//---清除选中状态
4 RadioGroup.check (int id);//---通过传入选项id来设置该选项为选中状态,如果传递-1作为指定的选择标识符来清除单选按钮组的勾选状态,相当于调用clearCheck()操作
5 setOnCheckedChangeListener (RadioGroup.OnCheckedChangeListener listener); //--一个当该单选按钮组中的单选按钮勾选状态发生改变时所要调用的回调函数
6 addView (View child, int index, ViewGroup.LayoutParams params);//---使用指定的布局参数添加一个子视图
7 //参数 child 所要添加的子视图 index 将要添加子视图的位置 params 所要添加的子视图的布局参数
8 RadioButton.getText();//获取单选框的值
9 //此外,RadioButton的checked属性设置为true,代码里调用RadioButton的check(id)方法,不会触发onCheckedChanged事件
>

RadioButton:单选框,俩个条件让其保持单选效果:1、需要放在同一RadioGroup里面 2、XML文件里设置id属性

属性:

android:text:设置复选框后的文本

android:checked;设置是否选中

方法

isChecked():判断选项是否被选中

getText():获取复选框按钮的文本内容

Spinner:下拉框

1
2
>  android:entries:设置下拉框的字符串数组,可引用数组资源如;@array/languages
>

SeekBar:进度条,ProgressBar的优化版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
>  seekBar.setOnSeekBarChangeListener( new SeekBar.OnSeekBarChangeListener() {
//进度条拖动时触发方法
/*progress参数:进度条当前位置
fromUser参数:当触发这个函数是由于用户拖拽行为造成的,那么fromUser就为True;
如果是因为代码更新SeekBar的位置造成的,那么fromUser为false
作用:防止在暂停时,拖动进度条导致进度条自动退至0
*/
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser) {
//获取拖动后的位置换算视频时长
int targetPosition = videoView.getDuration() * progress / 100;
videoView.seekTo( targetPosition );
}
}
//进度条按下时触发方法
@Override
public void onStartTrackingTouch(SeekBar seekBar) { }
//进度条松开时触发方法
@Override
public void onStopTrackingTouch(SeekBar seekBar) { }
} );
>

SearchView:搜索框

属性

输入类型
android:inputType

最大宽度
android:maxWidth

搜索图标是否显示在搜索框内:默认为true
mSearchView.setIconifiedByDefault(true);

搜索图标是否显示在搜索框内
mSearchView.setIconifiedByDefault(true);

设置搜索框展开时是否显示提交按钮,可不显示
mSearchView.setSubmitButtonEnabled(true);

让键盘的回车键设置成搜索
mSearchView.setImeOptions(EditorInfo.IME_ACTION_SEARCH);

搜索框是否展开,false表示展开
mSearchView.setIconified(false);

获取焦点
mSearchView.setFocusable(true);
mSearchView.requestFocusFromTouch();

设置提示词
mSearchView.setQueryHint(“请输入关键字”);

设置输入框文字颜色
EditText editText = (EditText) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
editText.setHintTextColor(ContextCompat.getColor(this, R.color.white));
editText.setTextColor(ContextCompat.getColor(this, R.color.white));

方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>  //设置搜索框触发方法
SearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
//提交时触发方法,s为搜索框的数据
@Override
public boolean onQueryTextSubmit(String s) {
return true;
}
//内容改变触发方法
@Override
public boolean onQueryTextChange(String s) {
return false;
}
});
>

ProgressDialog:进度条对话框

后台:

setTitle(String):设置进度条对话框标题

setMessage(String):设置进度条对话框信息(内容)

setCancelable(true/false):设置进度条对话框是否可取消

show():显示进度条对话框

dimiss():关闭对话框

(重点)ListView:列表控件,不同于上面其它控件,格式为:

** Part One后台**:用到ListView类和适配器类(这里选用数组适配器类ArrayAdapter<列表子项类型>)

ListView后台代码:

setAdapter():传入设置的适配器

setOnItemClickListener(new OnItemClickListener(){

public void onItemClick(AdapterView<?> parent,int position, longid){

//点击子项触发事件代码….此处position为子项索引值,可用ArrayAdapter类型的适配器类的get(position)方法

//从子项数组取出子项类

}

});

ArrayAdapter<列表子项类型>后台代码:

ArrayAdapter<列表子项类型>(当前活动.this,列表子项布局id,列表子项数组):构造一个适配器,若此时id为

android.R.layout.simple_list_item_1,此时子项布局为内置布局文件,只有一个

TextView,子项数组应为String类型与之对应

** Part Two自定义子项步骤:**

1、自定义子项布局文件,在构建适配器时传入布局id

2、自定义子项类(包含对应的类型变量,如 TextView对应定义String变量,图片对应int变量),同时重写子项类构造

函数和对应变量的返回函数

3、自定义适配器类(包含子项布局ID变量resourceId,因为后面要用)继承于ArrayAdapter<自定义子项类>

重写构造方法:super(当前活动.this,列表子项布局id,列表子项数组)

resourceId=列表子项布局id;

重写public View getView(int position,View cachView,ViewGroup parent):当列表滚动至屏幕包含子项调用的方法

Fruit fruit=getItem(position); //获得滚动进屏幕的子项类

View view;

if(cachView==null){ //缓存视图为空

view=LayoutInflater.from(getContext()).inflate(resourceId,null); //获得子项布局View

} else{

view=cachView;

}

//接下来就是给布局文件里的具体控件加载资源

//如:TextView textView=findViewById(R.id.控件id名);

// textView.setText(fruit.getText());….

return view; //最后返回子项布局view

}

2、布局

LinearLayout:线性布局

RelativeLayout:相对布局(推荐使用,可随意放置控件布置)

TableLayout:表格布局

FrameLayout:少用

3、XML引入自定义布局

<#include layout=”@layout/布局文件名”>

四、anim:存放动画文件

五、minmap:存放系统资源文件

六、raw:存放任意类型文件,一般存放比较大的音频视频,图片或文档。会在R类中生成资源id,封装在APK中

七、assets:存放任意类型文件,不会被编译。与raw相比,不会在R类中生成资源id

1、可能是SDKTools工具版本与build.gradle文件里的版本号不一致

1
File-Settings-Appearance & Behavior->System.Settigs->Android SDK->Android SDK Tools的版本号与gradle文件里的compileSdkVersion
1
、targetSdkVersion版本号不一致,

res文件夹及xml资源文件详解的更多相关文章

  1. android项目 res/ 目录内支持的资源目录详解

    表 1. 项目 res/ 目录内支持的资源目录 目录 资源类型 animator/ 用于定义属性动画的 XML 文件. anim/ 定义渐变动画的 XML 文件.(属性动画也可以保存在此目录中,但是为 ...

  2. 【安卓】安卓res文件夹下的资源文件与R.java文件里面类的对应关系

    对于drawable.layout.menu文件夹下的每一个文件都分别会在R.java文件里面生成drawable.layout.menu类的一个常量,类名就是文件夹的名字,常量的名字就是文件名字. ...

  3. Android中项目中各个文件夹的含义和用途详解

    1.src:存放所有的*.java源程序. 2.gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID. 3.assets:可以存放项目一些较大的资源文件,例如:图片. ...

  4. eclipse项目中将普通文件夹转化成资源文件夹

    1.点选该文件夹 2.右键属性Properties 3.选择属性:Build Path 4.点选属性:Use as  Source Folder ......等待变成资源文件夹 参考更详细的: ecl ...

  5. Android反编译(二)之反编译XML资源文件

    Android反编译(二) 之反编译XML资源文件 [目录] 1.工具 2.反编译步骤 3.重新编译APK 4.实例 5.装X技巧 6.学习总结 1.工具 1).反编译工具  apktool http ...

  6. (转载)Android xml资源文件中@、@android:type、@*、?、@+引用写法含义以及区别

    原帖地址:http://blog.csdn.net/zfrong/article/details/7332545 Android xml资源文件中@.@android:type.@*.?.@+引用写法 ...

  7. 如何将Debug文件夹下的资源打包成一个EXE文件直接执行

    前言:前段时间写了个小程序,想分享给好友看看,可所以资源都放在Debug文件夹下,整个文件夹发给人家这也太……,为了显得稍微专业一点,想把它们打包一个EXE文件执行,因为我见到到这样的程序,直接一个E ...

  8. 原生js 遍历文件夹分析xml并保存

    其实这种功能,网上相关的代码多的是,我也是因为今天正好要用到这个功能,所以临时写了下,放这里保存下,以便将来自己或者别人用的上吧. 当然我写的是一个hta文件.下面是完整js代码,都是调用active ...

  9. 把java文件打包成.jar (jar命令详解)

    把java文件打包成.jar (jar命令详解) 先打开命令提示符(win2000或在运行框里执行cmd命令,win98为DOS提示符),输入jar Chelp,然后回车(如果你盘上已经有了jdk1. ...

随机推荐

  1. linux中awk的应用

    1.awk的基本认识和使用方法,参考下面链接 https://www.cnblogs.com/timxgb/p/4658631.html 2.awk中关于条件判断的用法,如 https://blog. ...

  2. ubuntu下安裝程序的三個方式

    引言 在ubuntu当中,安装应用程序我所知道的有三种方法,分别是apt-get,dpkg安装deb和make install安装源码包三种.下面针对每一种方法各举例来说明. apt-get方法 使用 ...

  3. tomcat设置远程监听端口(linux&windows)

    1.Linxu系统: apach/bin/startup.sh开始处中增加如下内容: declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent ...

  4. 17.3.16---python内建函数

    内置函数,无需import,任何时候都可以直接被使用 1------ Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍 ...

  5. Ubuntu18.04 离线安装 docker

    Ubuntu18.04 离线安装 dockerhttps://blog.csdn.net/u012814856/article/details/804231851. 将下载下来的文件夹中的 4 个文件 ...

  6. Debian8.8下的VIM的配置文件

    传动们:http://blog.csdn.net/gatieme/article/details/43883261?spm=5176.100239.blogcont47532.3.yXiEuB 感觉挺 ...

  7. mysql 视图 事务 索引

    为什么需要有视图 * 对于复杂的查询,往往是有多个数据表进行关联查询而得到,而这种语句往往比较复杂,也可能非常频繁的使用. 比如这样的SQL语句 select goods.name,goods_cat ...

  8. dsp

  9. 使用tomcat方式实现websocket即时通讯服务端讲解

    使用tomcat方式实现websocket即时通讯服务端讲解 第一种方案:使用Tomcat的方式实现 tomcat版本要求:tomcat7.0+.需要支持Javaee7 导入javeee-api的ja ...

  10. Chapter1. The Electromagnetic Model (Field and Wave Electromagnetics. Second Edition) David K. Cheng

    1-1 Introduction electric charge n.电荷 vice versa adv. 反之亦然 elastic adj. 弹性的 postulate v.假定 hasten v. ...