Android开发——《第一行代码》学习笔记
12.21
学习成果:安装java、AS并配置环境;了解项目结构、目录;在模拟器运行helloworld应用并分析
1.目录下主要关注app文件夹,其余大多数为自动安装的开发组件,不用管
2.res文件夹存放图片、图标、文字等资源(resource)
调用res里资源的语法为 (java代码中)R.xxx.文件名 / (xml文件里)@xxx/文件名
xxx为res下的目录,如果是引用的图片资源就是drawable ,如果是引用的应用图标就替换成mipmap ,如果是引用的布局文件就替换成layout,引用字符串就是string
3.java继承 extends 引用父类的关键字:super
4.java声明变量时关键字:public与private
12.22
1.protected关键字是一个访问权限修饰符。只有其类或者其子类可以访问,如果是用来声明方法:
protected string a() 和 protected void b() 那么a这个方法里面必须要有返回值,并且返回值为string类型的,b方法是不用返回值的
在安卓创建活动时,protected用于重写onCreate()方法,重写的内容默认直接调用父类的onCreate(),也可以在此基础上添加修改逻辑
2.活动
是什么——包含用户界面的组件,用于交互,每个app包含0个或多个
怎么做——创建空活动、创建布局文件并引用、注册(as会自动注册)、为app配置主活动(首先启动的活动)
PS:如果你的应用程序中没有声明任何一个活动作为主活动,这个程序仍然是可以正常安装的,只是你无法在启动器中看到或者打开这个程序。这种程序一般都是作为第三方服务供其他应用在内部进行调用的,如支付宝快捷支付服务。
3.XML引用id的语法:(+的区别)
如果你需要在XML中引用一个id ,就使用@id/id_name 这种语法,而如果你需要在XML中定义一个id ,则要使用@+id/id_name 这种语法。
4.用match_parent 表示让当前元素和父元素一样
用wrap_content 表示当前元素的高度只要能刚好包含里面的内容就行
1.2
1.在活动中加载布局
2.java中@override的作用
@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:
第一可以当注释用,方便阅读;
第二编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。
举例:在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性。
@Override
public void onCreate(Bundle savedInstanceState)这种写法是正确的,如果你写成:
@Override
public void oncreate(Bundle savedInstanceState)
编译器会报如下错误:The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method,以确保你正确重写onCreate方法(因为oncreate应该为onCreate)。而如果你不加@Override,则编译器将不会检测出错误,而是会认为你为子类定义了一个新方法:oncreate
3.使用toast
目的:弹窗显示信息
用法:先定义一个弹出toast的时间节点;再用maketext方法定义toast的文本内容与显示时长
这里需要注意的是,makeText() 方法需要传入3个参数。第一个参数是Context ,也就是Toast要求的上下文,由于活动本身就是一个Context 对象,因此这里直接传入FirstActivity.this 即可。第二个参数是Toast显示的文本内容,第三个参数是Toast显示的时长,有两个内置常量可以选择Toast.LENGTH_SHORT 和Toast.LENGTH_LONG
我的疑惑:不理解context这个参数传入的意义:
context会用来渲染布局,可以理解为展示ui的必要条件。
之所以展示toast是因为某页面A满足了特定的要求(比如说,网络不给力),而此显示只针对页面A,也就是说当A页面发生网络不给力事件的时候应该显示toast,但是如果出了页面A,那么就没必要显示toast,所以makeText(Context context, CharSequence text, int duration)的context一般应为activity
1.8
1.创建memu:用<item创建菜单项,然后通过android:id给这个菜单项指定一个唯一的标识符,通过android:title给这个菜单项指定一个名称。
接着重写写onCreateOptionsMenu()方法,定义创建菜单的资源,让菜单项显示出来
最后定义菜单响应事件(逻辑判断)
2.销毁活动的方法:一是按下back键;二是调用finish()方法
3.当又不止一个活动时,活动之间的通信就涉及到Intent。Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、启动服务以及发送广播等场景。
两类:
显式intent、隐式intent
显式:直接在构造方法内传参,例如在button的clik方法里传入打开某个活动
隐式:不明确指定启动哪个Activity,而是设置Action、Data、Category,让系统来筛选出合适的Activity。(筛选是根据所有的<intent-filter>来筛选。</intent-filter>
4.隐式intent的其他骚操作
调用系统浏览器、指定当前活动相应什么类型的数据(http、host、。。。)、调用拨号等
5.
OPPO公司福利 1182人发布