一、前言
本周学习了安卓的应用程序资源和常用控件。第一个案例包括字符串、数组、颜色、图片、音频,而常用控件演示了标签和编辑框的案例。
二、安卓应用程序资源
1、将图片和音乐分别拷贝到drawable和raw(自己创建中。
2、布局activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:gravity="center"
android:orientation="vertical">
<Button
android:id="@+id/btnAccessString"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:onClick="doAccessString"
android:text="@string/access_string"
android:textColor="#0000ff"
android:textSize="20sp"/>
<Button
android:id="@+id/btnAccessStringArray"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:onClick="doAccessStringArray"
android:text="@string/access_string_array"
android:textColor="#0000ff"
android:textSize="20sp"/>
<Button
android:id="@+id/btnChangeBackColor"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:onClick="doChangeBackColor"
android:text="@string/change_backcolor"
android:textColor="#0000ff"
android:textSize="20sp"/>
<Button
android:id="@+id/btnChangeBackground"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:onClick="doChangeBackground"
android:text="@string/change_background"
android:textColor="#0000ff"
android:textSize="20sp"/>
<Button
android:id="@+id/btnPlayMusic"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:onClick="doPlayMusic"
android:text="@string/play_music"
android:textColor="#0000ff"
android:textSize="20sp"/>
</LinearLayout>
3、字符串文件资源strings.xml包括字符串资源和数组资源
4、在颜色资源文件colors.xml中自定义颜色
5、主页面类MainActivity
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private LinearLayout root;//线性根布局
private MediaPlayer mp;//媒体播放器
private int colorClickCount;//【改变背景色】按钮单击次数
private int pictureClickCount;//【改变背景图片】按钮单击次数
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//利用布局资源文件设置用户界面
setContentView(R.layout.activity_main);
//通过资源标识符获取控件实例
root = findViewById(R.id.root);
}
/**
* 访问字符串资源按钮单击事件处理方法
*
* @param view
*/
public void doAccessString(View view) {
//访问字符串资源
String strCollege = getResources().getString(R.string.college);
//通过吐司来显示字符串数量
Toast.makeText(this, "你的学校:" + strCollege,
Toast.LENGTH_LONG).show();
}
/**
* 访问字符串数组资源按钮单击事件处理方法
*
* @param view
*/
public void doAccessStringArray(View view) {
//获得字符串数组资源,保存在字符串数组变量里
String[] strMajors = getResources().getStringArray(R.array.majors);
StringBuffer buffer = new StringBuffer();
//遍历字符串数组,将每个元素拼接起来
buffer.append("信工院专业\n\n");
//传统for循环
for (int i = 0; i < strMajors.length; i++){
buffer.append(strMajors[i] + "\n");
}
//通过吐司来显示字符串数组
Toast.makeText(MainActivity.this, buffer.toString(), Toast.LENGTH_LONG).show();
}
/**
* 改变背景色按钮单击事件处理方法
* @param view
*/
public void doChangeBackColor(View view) {
//获得颜色数组
int[] colors = new int[7];
colors[0] = getResources().getColor(R.color.black);
colors[1] = getResources().getColor(R.color.green);
colors[2] = getResources().getColor(R.color.blue);
colors[3] = getResources().getColor(R.color.red);
colors[4] = getResources().getColor(R.color.white);
colors[5] = getResources().getColor(R.color.yellow);
colors[6] = getResources().getColor(R.color.purple);
//获取颜色索引
int index = ++colorClickCount % colors.length;
//设置屏幕背景色
root.setBackgroundColor(colors[index]);
}
/**
* 改变背景图片按钮单击事件处理方法
* @param view
*/
public void doChangeBackground(View view) {
//初始化背景图片标识符数组
int[] imgPics = new int[7];
for(int i = 0; i < imgPics.length; i++){
imgPics[i] = getResources().getIdentifier("img" + (i + 1),
"drawable", "net.lbj.use_app_resources");
}
//获取图片索引
int index = ++pictureClickCount % imgPics.length;
//设置屏幕背景图片
root.setBackgroundResource(imgPics[index]);
}
/**
* 播放音乐按钮单击事件处理方法
* @param view
*/
public void doPlayMusic(View view){
if(mp == null){
//创建媒体播放器,指定播放源
mp = MediaPlayer.create(MainActivity.this, R.raw.alice);
//设置循环播放方式
mp.setLooping(true);
//播放指定音频文件
mp.start();
//设置完成监听器
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
Toast.makeText(MainActivity.this, "音乐播放完毕!",
Toast.LENGTH_LONG).show();
}
});
}
}
}
6、运行结果
三、常用控件
1、标签常用属性
- text:标签文本内容
- textColor:标签文本颜色
- textSize:标签文本字号(单位用sp)
- textStyle:标签文本样式(normal | bold | italic)
- autoLink:自动链接(none、web、email、 phone、map)
- background:背景(背景色、背景图片、背景图形)
- textAllCaps:字母全大写
- drawableTop:图片在上
- drawableBottom:图片在下
- drawableLeft:图片在左
- drawableRight:图片在右
2、编辑框常用属性 - maxLines:最大行数
- lines:行数
- inputType:输入数据类型
- hint:提示
- textColor:文本颜色
- textSize:文本字号
- textColorHint:提示文本颜色
- singleLine:文本是否单行(true, false)
四、遇到的问题
1、安卓应用程序资源案例中背景图片和音乐无法正常运行
解决方法:原因是在MainActivity中写背景图片处理方法时图片名称写错了,所以改名称。音乐无法播放是忘记开声音。
2、常用控件的两个案例运行不出来或者内容对不齐
解决方法:检查完善activity_main.xml和activity_registration.xml中的内容。