Android应用的资源

资源文件在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、上下文菜单

长按实现上下文菜单,前面博客文章有过介绍,不再赘述。

原文地址:https://www.cnblogs.com/dongao/p/12253716.html