在Java代码中控制UI界面
直接在MainActivity.java中编写Java代码控制界面
按上一个生成moudle的方法,在生成的project中新建一个moudle
由于本案例直接使用Java设置布局,故不需要布局文件,对于自动生成的activity_main.xml布局文件可以直接删除,只在MainActivity.java中编写程序
删除生成的引用布局文件语句
MainActivity.java中的语句: setContentView(R.layout.activity_main);
开始编写
//原始代码
package com.example;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //删除
}
}
将背景图片添加到mipmap中
// 修改代码
package com.example;
import android.content.DialogInterface;
import android.graphics.Color;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//创建布局管理器对象
FrameLayout frameLayout = new FrameLayout(this);
frameLayout.setBackgroundResource(R.mipmap.bg); //设置背景图片
setContentView(frameLayout); //将定义的布局管理器添加到activity中
// 创建文本对象
TextView textView1 = new TextView(this);
textView1.setText("开始游戏'"); //设置文本内容
textView1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); //设置字体大小
textView1.setTextColor(Color.rgb(17, 85, 114)); //设置颜色
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT); // 实例化布局对象,并设置好布局宽度和高度
params.gravity = Gravity.CENTER; //布局对齐方式设置居中
textView1.setLayoutParams(params); //为文本框设置参数
//为文本框组件设置一个单击事件
textView1.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
new AlertDialog.Builder(MainActivity.this).setTitle("系统提示")
.setMessage("游戏有风险,进入需要谨慎,真的要进入吗?")
//设置开始按钮
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Log.i("桌面台球", "进入游戏");
}
//设置退出按钮
}).setNegativeButton("退出", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Log.i("桌面台球", "退出游戏");
finish();
}
}).show(); //调用show()方法显示对话框
}
});
frameLayout.addView(textView1); // 将定义的文本框添加到组件
}
}
选择javalayout运行
选择新建一个AVD,新建结果:
结果:
点击开始游戏:
点击退出后直接退出到原始桌面
点击确定后留在游戏界面
注:由于之添加了按钮,但是并未添加其他活动,所以点击确定还不会进入其他界面