动态布局
1、加载到/创建了布局对象(ViewGroup及其子类对象)
// 创建一个布局
layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
2、创建子视图(布局的孩子)
// 创建按钮
Button btn1 = new Button(this);
//设置基本属性
3、通过布局的LayoutParams参数配置子视图的布局效果(宽高边距)
// 配置布局参数
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(200,
LinearLayout.LayoutParams.WRAP_CONTENT);
lp.leftMargin = 20;
4、对子视图使用布局参数
btn1.setLayoutParams(lp);
5、添加子视图到布局中
layout.addView(btn1);
移除子视图
//获取孩子的总个数
int count = layout.getChildCount();
//获取孩子的对象
View child = layout.getChildAt(count-1);
//移除子视图
layout.removeView(child);
移除全部孩子
layout.removeAllView();
Activity生命周期
运行前
onCreate 创建完毕
onStart 启动 <----------------onRestart--------|
onResume 状态恢复 <------------------- |
| |
运行(用户可以看到布局,可以操作界面元素) | |
运行后 | |
| |
onPause 暂停(失去焦点)---------------- |
onStop 停止(整个界面都黑了不可见不可操作)-----------
onDestroy 销毁(释放资源)
Activity常用方法
setContentView 设置布局
startActivity 启动新界面
finish 结束当前界面
findViewById从布局中找到控件
getIntent()获取启动该Acitivity的Intent对象
Intent
启动新界面,可以通过putExtras方法来携带数据
Intent it = new Intent(this, Activity02.class);
//携带数据(Bundle)
it.putExtra("m_name", "张三");
it.putExtra("age", 20);
startActivity(it);
目标界面,接收数据
Intent intent = getIntent();
String name = intent.getStringExtra("m_name");
int a = intent.getIntExtra("age", 0);
startActivityForResult
1、在启动触发界面使用startActivityForResult启动
Intent it2 = new Intent(this,Activity02.class);
it2.putExtra("m_name", "第二种跳转");
//为了一个结果启动界面(第二个参数是一个requestCode,行为id)
startActivityForResult(it2, 100);
2、被启动界面可以getIntent得到被启动的Intent对象,处理内容,但是在结束之前需要通过setResult返回内容
//返回数据给上一个界面(针对startActivityForResult)
setResult(RESULT_OK);
finish();
携带数据回去:
Intent it = new Intent();
it.putExtra("result", "Activity02返回的内容");
setResult(RESULT_OK, it);
finish();
3、在启动的触发界面重写onActivityResult来接收内容
//针对startActivityForResult启动之后接收结果的方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 100){
if(resultCode == RESULT_OK){
String result = "abc";
if (null != data) {
result = data.getStringExtra("result");
}
Toast.makeText(this, result, 2000).show();
}else{
Toast.makeText(this, "收到:"+resultCode, 2000).show();
}
}
}
Activity的启动方式
查看栈结构的指令
adb shell dumpsys activity > D:/log201704271746.txt
搜索Running activities
通过在