安卓应用开发在我的大三下学期课程里也有学习,我们学习过计算器的开发,跑马灯,登录页面,连连看小游戏,没有涉及到太深的应用开发,不过能在课程里面锻炼java编程的能力对我这个java后端学习者来说也是很不错的。
首先在主界面配置文件里涉及图案:
采用帧布局,帧布局中会存在上层覆盖的现象,所以一定注意减小一层一层图案的大小。
给每一个图案设置id便于利用view.fingviewbyid();方法映射到它并对它实施操作。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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/t1"
android:layout_width="340dp"
android:layout_height="340dp"
android:layout_gravity="center"
android:background="@color/purple_500"/>
<TextView
android:id="@+id/t2"
android:layout_width="260dp"
android:layout_height="260dp"
android:layout_gravity="center"
android:background="@color/purple_200"/>
<TextView
android:id="@+id/t3"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_gravity="center"
android:background="@color/purple_700"/>
<TextView
android:id="@+id/t4"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:background="@color/white"/>
<TextView
android:id="@+id/t5"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:background="@color/black"/>
</FrameLayout>
主活动文件,MainActivity.java
package com.example.deng;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity {
/*定义数组存放颜色*/
private int[] colourA = {
R.color.purple_200,
R.color.purple_500,
R.color.purple_700,
R.color.white,
R.color.black,
};
/*定义视图数组准备存放视图*/
private TextView[] viewA = new TextView[5];
/*定义id数组存放id*/
private int [] idA = {
R.id.t1,
R.id.t2,
R.id.t3,
R.id.t4,
R.id.t5
};
/*对应下面的id调用findById方法对应视图进入我们准备视图数组*/
private void init(){
for(int i=0;i<idA.length;i++){
viewA[i] = (TextView) findViewById(idA[i]);
}
}
/*定义循环颜色辅助参数*/
private int sum=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*调用初始化方法,将我们要修改的视图存放在我们的视图数组里*/
init();
/*创建一个新的Timer对象准备实现它的计划任务方法*/
Timer timer = new Timer();
/*写好一个计划任务对象,以便接下来的计划任务方法调用*/
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
for(int i=0;i<colourA.length;i++){
viewA[i].setBackgroundResource(colourA[(i+sum)%colourA.length]);
}
sum++;
}
};
/*调用计划任务对象,实现周期性颜色变化*/
timer.schedule(timerTask,0,300);
}
}
这里复写了TimeTask对象的run方法,经过上个文章的说明我们知道run方法是专属于多线程的方法。