《第一行代码(第二版)》的学习(一)

来源:互联网 发布:java自学步骤 编辑:程序博客网 时间:2024/05/18 01:37
  1. application中
    android:supportsRtl=“true” Rtl = right - to - left
    从右向左的布局;不要使用margin right 使用 margin end
  2. ID
    你需要在XML中引用一个id,就使用@id/id_name;
    你需要在XML中定义一个id,就使用@+id/id_name;
  3. 在活动中使用menu:
    ①res-新建menu-新建xml-编写菜单的item
    ②重写两个方法
    onCreateOptionsMenu()
    onOptionsItemSelected()
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@+id/add" android:title="add"></item><item android:id="@+id/remove" android:title="remove"></item></menu>
    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.main,menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()){            case R.id.add:                Toast.makeText(this, "add", Toast.LENGTH_SHORT).show();            case R.id.remove:                Toast.makeText(this, "remove", Toast.LENGTH_SHORT).show();        }        return true;    }
  1. Intent < data >标签
    android:scheme 用于指定数据的协议部分,如:http、geo(显示地理位置)、tel(拨打电话)等
    android:host 用于指定数据的主机名部分,如:www.baidu.com
    android:port 用于指定数据的端口部分,一般紧随在主机名之后
    android:path 用于指定主机名和端口之后的部分,如:一段网址中跟在域名之后的内容
    android:mimeType 用于指定可以处理的数据类型,允许使用通配符的方式进行指定
  2. 返回键的监听back
    重写onBackPressed()方法
  3. 生命周期
    onCreate() 活动在第一次创建的时候被调用,完成 初始化操作,如:加载布局、绑定事件等
    onStart() 视图由不可见变为可见
    onResume() 位于返回栈的栈顶,并处于运行状态
    onPause() 释放掉一些消耗CPU的资源,保存一些关键的数据,但这个方法执行的速度要快,不然会影响到新的栈顶活动的调用
    onStop() 如果启动的活动是一个对话框式的活动,那么onPause()方法会得到执行,而onStop()方法不会被执行
    onDestroy()
    onRestart() 在活动由停止状态变为运行状态之前调用
    ★在onStart()方法中对资源进行加载,在onStop()方法中对资源进行释放,可以保证处于停止状态的活动不会占用过多内存
  4. 活动的启动模式
    standard 系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例
    singleTop 在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例
    singleTask 每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例
    singleInstance 在这种模式下会有一个单独的返回栈来管理这个活动,不管是哪个应用来访问这个活动,都共用的同一个返回栈,同时解决了共享活动实例的问题

  5. getClass().getSimpleName() 获取当前活动的名字

  6. 随时随地退出程序
import android.app.Activity;import java.util.ArrayList;import java.util.List;/** * Created by J on 2016/12/27. */public class ActivityCollector {    public static List<Activity> mActivities = new ArrayList<>();    public static void addActivity(Activity activity){        mActivities.add(activity);    }    public static void removeActivity(Activity activity){        mActivities.remove(activity);    }    public static void finishAll(){        for (Activity activity:mActivities) {            if (!activity.isFinishing()){                activity.finish();            }        }    }}
import android.app.Activity;import android.os.Bundle;import com.juice.mytreasure.utils.ActivityCollector;/** * Created by J on 2016/12/18. */public  abstract class BaseActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(setView());        ActivityCollector.addActivity(this);        init();        setDatas();    }    protected abstract void setDatas();    protected abstract void init();    protected abstract int setView();    @Override    protected void onDestroy() {        super.onDestroy();        ActivityCollector.finishAll();    }}
  1. 启动活动的最佳写法
import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import com.juice.mytreasure.R;/** * Created by J on 2016/12/27. */public class SecondActivity extends AppCompatActivity {    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_intent_second);    }    public static void actionStart(Context context,String data1,String data2){        Intent intent = new Intent(context, SecondActivity.class);        intent.putExtra("param1",data1);        intent.putExtra("param2",data2);        context.startActivity(intent);    }}
        mButton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                SecondActivity.actionStart(MainActivity.this,"data1","data2");            }        });
0 0
原创粉丝点击