目录

一、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. docker---设置镜像加速器

    国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器,国内很多云服务商都提供了国内加速器服务,如: Azure 中国镜像: https://dockerhub.azk8s.cn ...

  2. [原]排错实战——通过对比分析sysinternals事件修复程序功能异常

    原调试debug排错troubleshootprocess monitorsysinternals 缘起 最近,我们程序的某个功能在一台机器上不正常,但是在另外一台机器上却是正常的.代码是同一份,vs ...

  3. tensorflow C++接口调用图像分类pb模型代码

    #include <fstream> #include <utility> #include <Eigen/Core> #include <Eigen/Den ...

  4. 阿里云ECS搭建邮件服务

    安装mailx [root@db ~]# yum install -y mailx [root@db ~]# vim /etc/mail.rc 设置发件人信息 ..... set from=yunwe ...

  5. android仿网易云音乐引导页、仿书旗小说Flutter版、ViewPager切换、爆炸菜单、风扇叶片效果等源码

    Android精选源码 复现网易云音乐引导页效果 高仿书旗小说 Flutter版,支持iOS.Android Android Srt和Ass字幕解析器 Material Design ViewPage ...

  6. LeetCode——376.摆动序列

    如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列.第一个差(如果存在的话)可能是正数或负数.少于两个元素的序列也是摆动序列. 例如, [1,7,4,9,2,5] 是一个摆动序列, ...

  7. Andorid Studio 3.1 引入第三方jar包的方法

    今天手痒,把android studio 从3.0升级到3.1.2 发现很多问题 1.发现编译会下载好多东西,等半天 2.之前的jar包导不进来了 针对jar包导入不成功,我查了一下说是不支撑comp ...

  8. PAT甲级——1035 Password (20分)

    To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem ...

  9. Python数据分析与展示第3周学习笔记(北京理工大学 嵩天等)

    入门学习马上结束辽. 1.Pandas库 import pandas as pd 两个数据类型:Series,DataFrame Series类型:数据+索引 自定义索引 b = pd.Series( ...

  10. Matlab高级教程_第二篇:MATLAB和C#一些常用的矩阵运算方法的转换

    1.相关方法已经生产引用,直接调用的结果如下: 2. 相关调用代码如下: using System; using System.Collections.Generic; using System.Li ...