资源文件在Android Studio 中自动创建到res目录下,下面进行详细介绍。
一、字符串资源
1、定义字符串资源文件:
写在res/values/strings.xml文件中的<string>里。
2、使用字符串资源
① 在XML文件中 @string/stringname
② 在Java文件中,获取资源并设置到当前的imageView中。
imageView.setText(getResources().getString(R.string.stringname));
二、颜色资源
1、定义:
其中,每一项都有1或2位0~F的十六进制组成,其中,透明度这项可以省略。
同时,Android Studio为我们提供了更简便的获取颜色办法。
2、颜色资源文件
① 定义颜色资源文件
写在res/values/colors.xml文件中的<color>里。
② 使用颜色资源
① 在XML文件中 @color/stringname
② 在Java文件中,获取资源并设置到当前的TextView中。
//要求最小sdk版本23 textView.setTextColor(getColor(R.color.colorname)); //下面常用 textView.setBackground(getResources().getColor(R.color.bgcolor));
三、尺寸资源
Android中常用的尺寸单位为dp和sp,为可伸缩像素。
dp:常用来作为边距和组件大小的单位。
sp:常用来作为字体大小的单位。
① 定义尺寸资源文件
写在res/values/dimens.xml文件中的<dimen>里。在新版本Android Studio中不自动生成,可以手动添加。
② 使用尺寸资源
① 在XML文件中 @dimen/dimenname
② 在Java文件中,获取资源并设置到当前的TextView中。
textView.setTextSize(getResources().getDimension(R.dimen.dimenname));
四、布局资源
① 定义尺寸资源文件
写在res/layout文件下。
② 使用尺寸资源
① 在XML文件中 ,适用于一个布局文件需要包含另一个布局文件的情况下。
<include layout="@layout/name"></include>
② 在Java文件中,通过 setContentView(R.layout.name)完成。
五、数组资源
① 定义尺寸资源文件
写在res/values文件下,由于Android Studio没有自动创建,所以需要手动创建。
主要有三个子元素可供数组资源定义,分别是:
① <array>子元素:内容可以是颜色,字符串,尺寸资源。
② <integer-array>子元素:整型数组
③ <string-array>子元素:字符串数组
定义如下:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="listitem"> <item>字符串1</item> <item>字符串2</item> <item>字符串3</item> </string-array> </resources>
② 使用尺寸资源
① 在XML文件中 ,一般用于下拉列表或列表视图中。
例如在ListView中:
<ListView entries="@array/listitem" />
② 在Java文件中,通过 setContentView(R.layout.name)完成。
String[] arr = getResource().getStringArray(R.array.listitem);
六、drawable资源
不仅包括图片资源(图像文件、9patch,shape,StateListDrawable),也包括一些xml文件,也叫做StateListDrawable资源。
注意,Android中不允许图片资源的文件名中出现大写字母,且不能以数字开头。
StateListDrawable资源
是定义在xml文件中的Drawable对象,根据状态呈现不同的界面。
创建文件edittext_focused.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- state下,提供了很多状态,这里选用的焦点的得到或失去 --> <item android:state_focused="true" android:color="#f60"/> <item android:state_focused="false" android:color="#0a0"/> </selector>
在xml文件中使用 :@drawable/edittext_focused。
七、mipmap资源
定义:主要是保存icon图片,应用程序的启动图标,加载渲染速度更快。
其他方面与drawable大致相同。
八、主题资源
。定义:主题资源是指定义界面主题的资源,设置窗口的整体样式,改变所有窗口外观的资源,在Android Studio 中通过这样可以找到默认添加的主题资源。
有很多主题风格可供选择,可以自己探索。
除了这些系统自带的资源,我们也可以自定义主题资源。
如何使用资源文件?
1、创建主题资源
在Android Studio res/values/style.xml文件中的<resource>中插入如下代码。
<style name="bgTheme" parent="@style/AppTheme"> <!-- 设置不显示标题栏为false,即显示标题栏 --> <item name="android:windowNoTitle">false</item> <!--设置背景图片--> <item name="android:windowBackground">@drawable/img05</item> </style>
2、使用主题资源
① 在AndroidManifest.xml中使用
我们可以为整个app设置主题,使用<application>下的<theme>,更改为我们写好的主题即可。
② 在Java中使用
//主题资源设置在contentView前面 setTheme(R.style.bgTheme); setContentView(R.layout.activity_main);
九、样式资源
主要用来设置不同的文字样式,颜色大小风格等。
主题和样式同样都设置在style.xml文件中,区别是:主题是设置整个APP或窗口的样式,而该资源是设置组件的样式。
<!--可以自定义名称--> <style name="title"> <item name="android:textSize">30sp</item> <item name="android:textColor">#06F</item> </style>
可在布局xml文件中设置样式。
<style="@style/title">
同时,有个继承样式需要注意,例如该content继承自之前的title。
<style name="content" parent="title"> <item name="android:textSize">16sp</item>
<item name="android:textStyle">bold</item>
<item name="android:layout_gravity">center_horizontal</item>
</style>
这里content具备title的所有属性,但若在content中重新定义了textSize,则以该定义为准。
十、菜单资源
提供菜单选择的资源,分为选项菜单和上下文菜单,通常需要我们手动添加到 Android Studio 的res目录下新建的menu目录中。
然后添加代码如下,创建菜单项。
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 增加菜单项 --> <item android:id="message" android:title="1"></item> <item android:id="message" android:title="2"></item> <item android:id="message" android:title="3"></item> </menu>
1、选项菜单
调出方法:单击手机菜单键或点击APP右上方3个小圆点。
//完成跳出菜单并根据选择的菜单选项跳转到指定的界面 //第三步:重写onCreateOptionsMenu()方法,添加一个选项菜单 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = new MenuInflater(this); menuInflater.inflate(R.menu.menu,menu); return super.onCreateOptionsMenu(menu); } //第四步:重写onOptionsItemSelected()方法,指定各个菜单被选项时,所应做的处理 @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { switch (item.getItemId()){ case R.id.settings: Intent intent1= new Intent(MainActivity.this,Setting.class); startActivity(intent1); break; case R.id.regard: Intent intent2= new Intent(MainActivity.this,regard.class); startActivity(intent2); break; } return super.onOptionsItemSelected(item); }
2、上下文菜单
长按实现上下文菜单,前面博客文章有过介绍,不再赘述。