Android Studio的应用资源
当我们经常编写很多页面时,会发现有很多重复的字吖,颜色吖,样式吖,一直在重复使用,如果我们每写一个页面或者每写一个地方就重新设置一下,这样子很麻烦,而且也不利于后期维护。因为如果发现一样的地方错了,那么每个写一样的地方都要改一遍,而如果把这些一样的样式吖字吖放在一个资源里面,每次使用只需要调用资源,那么修改的时候也只需要改资源里面的就好了。
下面这个截图红圈圈圈起来的是资源的放置地方。
设置常用的字符串(字)
strings.xml:文件是存放字符串类型的文件。
中文汉字也是字符串类型,所以如下图这样先写个string标签,给标签命个名,这是给布局页面调用的名字,然后把自己要设置的字符串(字)写在标签里面就好了。
然后第一行的string是APP应用程序的名字。可以自由修改
然后是在布局页面调用。
语法是“@string/名字(name)",这里这个名字就是自己设置在strings.xml文件里面的那个name。
布局页面xml文件代码:
注意text和hint属性引用资源的办法
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="君不见黄河之水天上来,奔流到海不复回"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.496"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.116" />
<TextView
android:id="@+id/textView4"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_marginStart="40dp"
android:layout_marginLeft="40dp"
android:layout_marginTop="28dp"
android:text="@string/usename"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<TextView
android:id="@+id/textView5"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_marginTop="84dp"
android:text="@string/usepass"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.152"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<EditText
android:id="@+id/edit"
android:layout_width="230dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:hint="@string/namehint"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.415"
app:layout_constraintStart_toEndOf="@+id/textView4"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<EditText
android:id="@+id/edit2"
android:layout_width="230dp"
android:layout_height="wrap_content"
android:hint="@string/passhint"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.402"
app:layout_constraintStart_toEndOf="@+id/textView5"
app:layout_constraintTop_toBottomOf="@+id/edit" />
</androidx.constraintlayout.widget.ConstraintLayout>
效果图:
设置公用的尺寸值(sp或者dp)
字体大小sp或者尺寸的的值也可以放置资源文件然后布局页面来调用。
这个sp和dp等尺寸的值也可以放在strings.xml文件里面,然后调用,但是这个会很杂乱,也不利于维护。所以另外建一个资源文件,存放这些dp值。新建的方法:
1、右击values -> New -> XML -> Values XML File
2、给这个文件一个名称,要看名知意。
建好之后就可以开始设置sp或者dp的值了。
尺寸值对应的标签是,然后把名称添上,对应尺寸值写在两个标签里面,如下图:
布局页面XML文件:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="君不见黄河之水天上来,奔流到海不复回"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.496"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.116" />
<TextView
android:id="@+id/textView4"
android:layout_width="@dimen/textwsize"
android:layout_height="wrap_content"
android:textSize="@dimen/texts"
android:layout_marginStart="40dp"
android:layout_marginLeft="40dp"
android:layout_marginTop="28dp"
android:text="@string/usename"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<TextView
android:id="@+id/textView5"
android:layout_width="@dimen/textwsize"
android:layout_height="wrap_content"
android:layout_marginTop="76dp"
android:text="@string/usepass"
android:textSize="@dimen/texts"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.152"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<EditText
android:id="@+id/edit"
android:layout_width="@dimen/ediwsize"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:hint="@string/namehint"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.415"
app:layout_constraintStart_toEndOf="@+id/textView4"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<EditText
android:id="@+id/edit2"
android:layout_width="@dimen/ediwsize"
android:layout_height="wrap_content"
android:hint="@string/passhint"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.402"
app:layout_constraintStart_toEndOf="@+id/textView5"
app:layout_constraintTop_toBottomOf="@+id/edit" />
</androidx.constraintlayout.widget.ConstraintLayout>
效果图:
设置颜色资源
颜色资源存放在colors.xml,
只需在里面设置一下就好了,和其他的设置方式差不多,只是标签名不一样。
colors.xml代码:
上面三个是一开始有的,后面两个是我自己写的。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#6200EE</color>
<color name="colorPrimaryDark">#3700B3</color>
<color name="colorAccent">#03DAC5</color>
<color name="colortext">#010303</color>
<color name="colortop">#4d4</color>
</resources>
布局文件XML代码:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/colortop"
android:text="君不见黄河之水天上来,奔流到海不复回"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.496"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.116" />
<TextView
android:id="@+id/textView4"
android:layout_width="@dimen/textwsize"
android:layout_height="wrap_content"
android:textSize="@dimen/texts"
android:textColor="@color/colortext"
android:layout_marginStart="40dp"
android:layout_marginLeft="40dp"
android:layout_marginTop="28dp"
android:text="@string/usename"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<TextView
android:id="@+id/textView5"
android:layout_width="@dimen/textwsize"
android:layout_height="wrap_content"
android:layout_marginTop="76dp"
android:text="@string/usepass"
android:textSize="@dimen/texts"
android:textColor="@color/colortext"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.152"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<EditText
android:id="@+id/edit"
android:layout_width="@dimen/ediwsize"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:hint="@string/namehint"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.415"
app:layout_constraintStart_toEndOf="@+id/textView4"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<EditText
android:id="@+id/edit2"
android:layout_width="@dimen/ediwsize"
android:layout_height="wrap_content"
android:hint="@string/passhint"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.402"
app:layout_constraintStart_toEndOf="@+id/textView5"
app:layout_constraintTop_toBottomOf="@+id/edit" />
</androidx.constraintlayout.widget.ConstraintLayout>
效果图:
样式文件操作
格式如下:
<resources>
<style name="样式文件名" parent="父样式表">
<item name="定义的属性">属性值</item>
</style>
</resources>
要使用已有的样式,在布局文件XML下添加属性如下:
style="@style/样式文件名"
在样式文件里面可以直接设置具体的属性值,也可以引用别的资源的属性值。
样式代码:
<resources>
<style name="mystyle">
<item name="android:text">君不见黄河之水天上来,奔流到海不复回</item>
<item name="android:textColor">@color/colorPrimary</item>
<item name="android:textSize">@dimen/toptext</item>
</style>
</resources>
布局文件XML代码:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
style="@style/mystyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.496"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.116" />
<TextView
android:id="@+id/textView4"
android:layout_width="@dimen/textwsize"
android:layout_height="wrap_content"
android:textSize="@dimen/texts"
android:textColor="@color/colortext"
android:layout_marginStart="40dp"
android:layout_marginLeft="40dp"
android:layout_marginTop="28dp"
android:text="@string/usename"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<TextView
android:id="@+id/textView5"
android:layout_width="@dimen/textwsize"
android:layout_height="wrap_content"
android:layout_marginTop="76dp"
android:text="@string/usepass"
android:textSize="@dimen/texts"
android:textColor="@color/colortext"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.152"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<EditText
android:id="@+id/edit"
android:layout_width="@dimen/ediwsize"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:hint="@string/namehint"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.415"
app:layout_constraintStart_toEndOf="@+id/textView4"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<EditText
android:id="@+id/edit2"
android:layout_width="@dimen/ediwsize"
android:layout_height="wrap_content"
android:hint="@string/passhint"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.402"
app:layout_constraintStart_toEndOf="@+id/textView5"
app:layout_constraintTop_toBottomOf="@+id/edit" />
</androidx.constraintlayout.widget.ConstraintLayout>
效果:
图片资源引用
可以直接将图片拖入 “res”目录下的”drawable"或者"mipmap"目录下。
如下:之后点击确定
之后到布局文件XML下引用:
"@drawable/图片名"
我给整个页面加个背景图片,就写加上去的这个代码了。其他的和上面的都一样。
android:background="@drawable/img2"
然后看看效果图:
图片有点小变形