一些需要注意的
1.一个Activity的构成,应由一个Class文件,一个视图描述文件,二者也可单独存在(Class中通过代码动态创建view,一个公共的layout文件可以多次使用)。
2.一个Android应用中至少要有一个AndroidManifests文件,它包含了应用的各种配置信息。
3.一个Android应用的版本号应在build.gradle中更改
4.为了保持良好的兼容性,创建应用时最低Android版本最好为2.3
布局
布局 | 说明 |
---|---|
线性布局 | 按照水平或垂直方向进行布局,当超出频幕后出现滚动条,不会自动换行 |
相对布局 | 相对于一个已存在的内容进行布局 |
如何创建一个活动
'''创建一个Intent,一个参数是当前上下文context,第二个参数是要开启的Activity'''
Intent intent = new Intent(getBaseContext(),WelcomeActivity.class);
startActivity(intent); '''启动'''
如何给按钮设置单击事件
'''通过ID查找到Button,findViewById返回View,但Button是View的子类可以强转'''
Button btnOpen = (Button) findViewById(R.id.btnOpen);
'''设置按钮单击事件的监听'''
btnOpen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getBaseContext(), WelcomeActivity.class);
startActivity(intent);
}
});
如何在两个Activity之间传值
1.单向传值,将数据传送给即将调用的Activity
Intent intent = new Intent(getBaseContext(), WelcomeActivity.class);
startActivity(intent); '''以此方法启用一个活动'''
'''在被调用的活动中使用一下方法接收参数'''
Intent intent = getIntent();
String name = intent.getStringExtra("name");
Log.d("", "传递过来的名字是:" + name);
2.双向传值,再将数据传送给一个Activity之后也可以回传数据
'''假设A中启动B'''
'''以下代码应在A中实现'''
Intent intent = new Intent(getBaseContext(), WelcomeActivity.class);
startActivityForResult(intent, 9527); '''以此方法启用一个活动'''
'''并且需要添加以下方法接收回传数据'''
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
'''确认请求编码与结果编码是否一致'''
if(requestCode == 9527 && resultCode == 95588) {
if (data != null) {
data.getStringExtra("result");
}
}
}
'''以下代码应在B中实现'''
'''在被调用的活动中使用一下方法接收参数'''
Intent intent = new Intent();'''也可以使用getIntent()获得的对象,需要注意的是A中传过来的数据仍会再次传递回去'''
intent.putExtra("result", "I'm back");
setResult(95588, intent);
Activity的生命周期
1.onCreate()
2.onStart()
3.onResume()
4.onPause()
5.onStop()
6.onDestroy()
7.onRestart()
一个Activity最简单的生命周期是从1-6,即从创建至消亡.
比较特殊的周期如下(假设有2个Activity,当前显示的是A, 另一个是B):
流程 | 触发条件 |
---|---|
4 -> 5 | 1.当在A中打开B 2.锁定屏幕 3.按下Home键 |
7 -> 2 -> 3 | 1.按下回退键,从B回到A 2.解锁屏幕 3.再次打开应用 |