常见方法
- super.onCreate():活动第一次被创建的时候调用,完成活动的初始化操作,比如加载布局、绑定事件等
- savedInstanceState:本质是一个bundle,以key-value的形式保存当前Activity的状态信息。这个参数作用是在游戏退出前,或者是电子书退出前,可以保存当前游戏或电子书的运行状态或页码,保证在下次启动Activity的时候可以继续。
1 | savedInstanceState.putInt("key1", 0);
2 | savedInstanceState.putString("key2", "savedInstanceState test");
- setContentView我们在Activity中经常见到,它的作用就是把我们的布局文件(xml文件)放在Activity中显示
- findViewByid()方法可以获取到布局文件中定义的元素,参数是组件的id,返回的是一个View对象,通常需要向下转型
- setOnClickListener()方法是Android开发中常用的点击事件监听器,多用于页面按钮调用,可为按钮注册一个监听器,点击按钮时就会执行监听器中的onClick()方法
- inflate()方法:主要作用就是将xml转换成一个View对象,用于动态的创建布局,主要有以下四种形式:
public View inflate(int resource, ViewGroup root)
public View inflate(int resource, ViewGroup root, boolean attachToRoot)
public View inflate(XmlPullParser parser, ViewGroup root)
public View inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot)
三个参数,分别是:
1. resource 布局的资源id
2. root 填充的根视图
3. attachToRoot 是否将载入的视图绑定到根视图(LinerLayout)中
- LayoutInflater总结:
- LayoutInflater是android用来解析xml布局文件的一个类
- LayoutInflater内部使用Pull解析的方式,并对其进行了一定的扩展。
- LayoutInflater在生成View节点的时候,是通过反射的方式创建View对象,反射调用的构造方法是带两个参数的那个,所以在定义View的时候必须重写带两个参数的构造方法。
- LayoutInflater在创建View对象的时候,会将xml节点的解析器AttributeSet传入到View的构造方法中。AttributeSet定义了用来解析xml节点属性的API。View通过AttributeSet生成TypedArray,并从中读取View节点中定义的属性。最后LayoutInflater将会通过递归的方式创建xml根节点下的所有孩子节点。
- LayoutInflater.inflate方法接收一个root对象以及一个Boolean类型的attachToRoot变量。这两个参数的值,直接影响了inflate方法的返回值,以及生成的xml根节点的LayoutParams和属性。
- inflater.inflate(R.layout.left_fragment, container, false)和LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item, parent, false)方法的区别?
-
inflater.inflate(R.layout.left_fragment, container, false)方法用于在Activity中加载一个布局文件,将其转化为一个View对象,并将这个View对象添加到指定的容器中,返回这个View对象。参数R.layout.left_fragment表示加载的布局文件,container表示将其添加到的容器,false表示是否将其添加到container中,这里表示不添加,返回的是该View对象。它通常用于Activity或Fragment中使用,主要用于初始化UI布局。
-
LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item, parent, false)方法用于加载一个RecyclerView或ListView中的一个列表项,并返回这个View对象。parent.getContext()表示获得列表项的父容器,即RecyclerView或ListView的父容器,然后将布局文件R.layout.fruit_item转化为一个View对象,并将这个View对象添加到RecyclerView或ListView的父容器中,返回这个View对象。这里的false表示不将这个View对象附加到父容器中。它主要用于优化RecyclerView的性能,避免在滑动过程中多次调用findViewById()方法。
综上所述,这两种方法的主要区别在于应用场景。 第一种方法主要用于初始化UI界面布局 第二种方法主要用于优化RecyclerView或ListView的性能,避免频繁地调用findViewById()方法。 注意:容器是指在Android布局中用于存放其他控件的控件,例如LinearLayout、RelativeLayout等。 而父容器指的是包含子控件的最外层容器,即在XML文件中定义布局的最外层控件,是一个顶级容器。 在使用LayoutInflater.inflate()方法时,第二个参数表示将该View添加到哪个容器中,而第三个参数表示是否添加该View。 当第三个参数为true时,表示添加该View到第二个参数容器中,当第三个参数为false时,表示该View并不自动添加到第二个参数容器中。 而在LayoutInflater.from()方法中,第二个参数parent就表示父容器,即该View的直接上级容器。
常见配置代码
- android:exported=“true“:表示当前Activity是否可以被另一个Application的组件启动:true允许被启动;false不允许被启动。
- IntentFilter:意图过滤器,当我们隐式的启动系统组件的时候,就会根据IntentFilter来筛选出合适的进行启动。比如有时候点击一个网页链接,会弹出多个应用,让用户选择用哪个浏览器去打开该链接,就是这种情况。如果组件的 IntentFilter 与 Intent 中的 IntentFilter 正好匹配,系统就会启动该组件,并把 Intent 传递给它。如果有多个组件同时匹配到了,系统则会弹出一个选择框,让用户选择使用哪个应用去处理这个 Intent
- LayoutParams:相当于一个Layout的信息包,封装了Layout的位置、宽、高等信息
Toast的简单使用
通过静态方法 makeText()创建出一个 Toast 对象,然后 show()出来就可以了。
makeText()方法需要传入 3 个参数。
第一个参数是 Context,由于活动本身就是一个 Context 对象,因此这里直接传入MainActivity.this 即可。
第二个参数是 Toast 显示的文本内容。
第三个参数是 Toast显示的时长,有两个内置常量可以选择 Toast.LENGTH_SHORT 和 Toast.LENGTH_LONG。
1 |Toast.makeText(MainActivity.this,"Hello World!",Toast.LENGTH_SHORT).show();
intent对象的通俗解释
- HTML的页面程序是使用"超链接"来实现页面之间的跳转,而Android应用程序界面是由一个或多个Activity组成的(一个Activity相当于HTML的一个页面),当一个Android应用程序具有多个相互联系的Activity时,就需要通过Intent对象来实现跳转。
- Intent的作用不仅用于实现Activity之间的跳转,它还是Android平台的各个部分之间实现信息沟通的桥梁。