这学期选了嵌入式这门课,选择了用做项目代替实验。项目最后需要一个APP来验收,所以我开始学习Android开发了,但难受的是,我完全没有java基础,而且现在从头开始学也不现实,所以选择了边做项目边学。
首先开始的是做一个UI,UI可以用xml制作,这种方法与之前做Matlab的gui差不多,另一种方法是用java代码编写,跟着例程,我写好了一个UI,下面开始分析Android Studio中的语法。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout flout=new FrameLayout(this);
flout.setBackgroundResource(R.mipmap.test1);
setContentView(flout);
TextView text1=new TextView(this);
text1.setText("开始游戏");
text1.setTextSize(TypedValue.COMPLEX_UNIT_SP,18);
text1.setTextColor(Color.rgb(255,255,255));
FrameLayout.LayoutParams flout2=new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
flout2.gravity= Gravity.CENTER;
text1.setLayoutParams(flout2);
text1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(MainActivity.this).setTitle("系统提示")
.setMessage("别玩")
.setPositiveButton("我要玩",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("一个游戏","进入游戏");
}
}).setNegativeButton("我不玩", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("一个游戏","退出游戏");
finish(); // 结束当前activity
}
}).show();
}
});
flout.addView(text1);
}
}
提取了MainActixity.java的主要部分,在写代码的时候总结了几点:
1、AS编写代码时,写了前半部分会自动联想后半部分,而且一段代码不符合语法马上标红,一般来说不容易出现语法错误
1、AS中java严格区分大小写
2、AS中java的点"." 逗号",“空格” “用法都很严格,三种符号都可作为代码间的分隔,但其用法不一样,观察可以得知:
(1)关键字后接标识符是空格,new与新建的对象之间也是空格,如 FrameLayout flout=new FrameLayout(this);
(2)对标识符进行操作的时接的”.",如flout2.gravity= Gravity.CENTER;
特别是set……的操作,监听器事件中的操作也是以".“开头
(3)多个参数之间用”,"分隔,如 text1.setTextColor(Color.rgb(255,255,255));
3、分析代码框架
(1)
-新建布局文件floutFrameLayout flout=new FrameLayout
-设置背景图setBackgroundResource
-应用布局文件setContentView
-新建文本框TextView text1=new TextView
-设置文本框内容text1.setText
-字体大小 text1.setTextSize
-颜色text1.setTextColor
(2)
-再新建一个布局文件flout2
FrameLayout.LayoutParams flout2=new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
与第一个布局文件不同的是,LayoutParams封装有一个View的布局参数,如位置,高度等。
-然后定义位置flout2.gravity= Gravity.CENTER;
-对上面的text1应用布局文件text1.setLayoutParams(flout2);
-为text1建立一个监听器text1.setOnClickListener(new View.OnClickListener()
要注意的是,监听器后的括号后半部分并不在这里,而是在对监听器设置完事件之后,写完上面代码AS会自动产生监听器事件的头文件
-在头文件下面新建一个对话框,设置对话框信息
new AlertDialog.Builder(MainActivity.this).setTitle("系统提示")
setMessage("别玩")
-new一个按钮,设置监听器
setPositiveButton("我要玩", new DialogInterface.OnClickListener() {
-设置监听器事件,并输出日志
public void onClick(DialogInterface dialog, int which) {
Log.i("一个游戏","进入游戏"); }
-在“我要玩” 事件完成后在new一个按钮“我不玩”,与上面类似,注意用“.”开头.setNegativeButton("我不玩", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Log.i("一个游戏","退出游戏");
-然后finish,结束当前activityfinish()
注意是在“我不玩”的输出日志后finish,然后才接“我不玩”监听器事件后半部分括号
-在我不玩按钮后接一句显示询问对话框的命令.show()
-在开始游戏按钮结束后接一句flout.addView(text1);
把文本框组件添加到布局管理器当中,注意这行代码不用“.”开头
模拟器运行效果
点击开始游戏
点击我要玩,因为监听器并没有实质性的事件,所以返回返回布局文件
点击我不玩,finish activity,退出布局文件,返回首页