动态布局

动态布局

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

通过在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值