大家好,欢迎来到IT知识分享网。
书:第一行代码
纸质第3版,用的是kotlin
电子版第2版,用的是Java
编程,移动平台,实际应用为主
结果:APP
android平台,软件著作权,
暂时不会涉及ios平台,
APP: 手机或者平板上层应用的APP
android:
- 系统剪裁移植,驱动开发
- NDK开发 C,CPP, so动态库,dll动态库,静态库,
- APP开发
APP
- CPP, cout, 平台不相关
- c
- h5, js, UI
- APP,UI
java -> CPP
- JAVA 是很简单的,相对Cpp来说
- 多了interface
review
- android 开发 大概地位 和其他相关的开发的区别
- 开发环境
- JAVA
- SDK
- android studio
- 模拟器
- 第一个APP
App 工程结构
- 了解 文件的组成,以及相应的用途
- 编译软件gradle,去下载,放到用户目录 的 .gradle
- 根据编译脚本 工程 prject build.gradle 统御全局
- 模块 app1 build.gradle 特殊 SDKVersion 引入第三库的依赖
- app2 build.gradle
打开上次第一个app的工程
- 找到当前使用的gradle版本号
- 找到project的build.gradle, 看看仓库是指向哪里
- 找到app的build.gradle,看看最小兼容的SDK版本是多少
- 找一下,当前app的图标,看看在哪里
- Androdimanifes.xml
- res目录
- 看一下,当前你这个app的名字是什么
- 源代码在哪里
- apk在哪里
修改第一个app
- app的图标
- app的名字
- sdk版本 mini
- 编译运行到模拟器
尝试adb命令
- adb
- devices
- push
- pull
- shell
- 进入shell
- linux命令
recap
- 工程文件
- project
- build.gradle
- app
- build.gradle
- src
- res
- AndroidManifest.xml
- project
调试
- adb
- shell 进入模拟器后台
- Log
- 静态类,直接调用其函数
- Log.v(String tag, String msg) vervose 级别最低
- Log.d debug
- Log.i info
- Log.w warn
- Log.e error 级别最高
- AndroidStudio中Logcat用法
- 选择模拟器
- 选择app进程
- 选择日志级别,级别越高,所看日志越少
- 日志组成
2020-09-28 15:29:51.516 8900-8900/com.zsc.myapplication E/MainActivity: error hello world- 日期时间
- PID进程ID
- 包名
- level级别
- tag
- msg
- Logcat过滤日志
- filter
- 不要勾选正则表达 Regex
- 综合使用 tag, message, package, PID 等来过滤日志
任务 Log和Logcat使用
- Log写日志
- Logcat查看和过滤日志
Activity 组件
- 活动
- java源代码
- xml 布局layout文件, 在AS中有两种打开方式
- text
- design
- 注册 AndroidManifest.xml
- 建立Activity的源代码和布局之间的联系
- setContentView
- 底层做的事情是,实例化布局中的所有UI控件,并且测量设置好位置关系
手动创建Activity
- 新建Activity
- 新建layout
- 建立二者联系
- 把手动创建的Activity设置成 第一个启动的Activity
Toast 的用法
- 静态类
- Toast.makeText(MyActivityFirst.this, // 上下文环境
“面包烤焦了”, // 弹出提示的那条消息
Toast.LENGTH_LONG).show(); // 消息维持long一点的时间 - 静态函数,直接用类名调用
- Log.v
- Toast.makeText 返回一个Toast的实例
- 非静态函数,就用实例(对象)来调用
- Toast 的 show
- Toast.makeText().show();
任务 Toast使用
- layout 加一个Button
- java 操作这个Button
- 能够响应click操作
- 加入Toast
Activity之间的跳转
- 借助Intent
- 两种方式
- 显式 构造一个Intent(first, second), startActivity
- 隐式
Activity之间的跳转
- 借助Intent
- 两种方式
- 显式 构造一个Intent(first, second), startActivity
- 隐式 根据Activity注册的时候(AndroidManifest.xml),指定intent-filter,Action,Category, data
- 不需要指定类名,而是去匹配 Action,Category, data
任务 Activity隐式跳转
- 修改AndroidManifest.xml,第二个Activity,增加intent-filter
- 在第一个Activity的代码里面,用itent来指定action,增加category,
- 设置data(待选)
- Intent使用
Activity之间的数据传递
- A1 -> A2
- 还是利用intent,把数据附着在intent上传递过去
- A1 Intent.putExtra
- A2 onCreat 里面 Intent.getXXXExtra
- A2 -> A1
- A1 启动A2 要求A2给我返回结果,startActivityForResult
- A2 Intent.putExtra, setResult
- A1 重写回调函数 onActivityResult,在其中getXXXExtra
关于override 函数
- 菜单 Code -> Override Methods -> 直接打出 onActivityResult -> 选中即可
- 在类内部,右击鼠标 -> Generate -> Override Methods -> 直接打出 onActivityResult -> 选中即可
任务 Activity之间相互传递数据
- A1 -> A2
- A2 -> A1
- 从A2返回到A1,也可以不用按钮,而是override onBackPressed
关于 adb 的路径
- 在cmder中无法直接运行adb
- 需要把要在命令行下 执行的 程序的路径 添加到path这个环境变量
- win 我的电脑-右击-属性-高级-环境变量-path
- linux 编辑文件 ~/.bashrc, 设置PATH环境变量
一个实际的项目
- yeyunxiaopan.xyz:8003
- 体会一下从原始需求到实现APP的过程
Activity 生命周期
任务 体会Activity生命周期
- 运行源码 helloworld-lifecycle
- 体会生命周期
- 注意对话框风格的Main3Activity 需要把父类改成Activity
- 尝试销毁第一个Activity,能够看到onDestory
UI布局
UI控件
- 最基本的用法
- 普通控件的用法
- Button
- ImageView
- 复杂的控件
- ListView
- RecyclerView
使用Button和ImageView
- Button setOnClickListener 三种设置接口的方法
- 匿名类
- 实名类
- MainActivity implemnts View.OnclickListener
- ImageView
- 静态设置一个src 的图片
- 在代码里动态修改图片
- 图片放在工程的src\main\res\drawable目录下
- 其它的控件
-
UI 布局
线性布局
- LinearLayout
- 方向 orintation
- 控件对齐方式 layout_gravity
- 注意和方向配合: 横向设置纵向的对齐,纵向设置横向的对齐
- 注意与控件内容对齐gravity的区别
- 权重 layout_weight
- 按照一定比例分配宽高
- 嵌套使用
相对布局
- RelativeLayout
- 相对父元素
- 相对兄弟元素
任务 线性布局
- 三个按钮,纵横方向
- 对齐方式
- 权重的用法
- 嵌套布局
任务 相对布局
- 相对父元素,5个按钮
- 相对兄弟元素,5个按钮
帧布局
- FrameLayout
- 默认每个元素堆叠在左上角
约束布局
- ConstraintLayout
- 尽量减少嵌套,提高性能
- 类似相对布局,不过更加灵活
- 可以按照角度来设置相对位置
- circle 相对某一个控件
- 半径
- 角度 0度是垂直方向
布局重用
- layout 被 其它layout包含 include
自定义控件
- 自定义一个View,从Layout派生
- 实现构造函数
- inflate 一个静态的布局
- 实现构造函数
- 使用自定义控件
- 代码里使用,直接new出来,比如 定制 toast
- layout里静态使用,和普通控件用法一样,注意包名是完整的
自定义控件
- 自定义View, inflate 之前的嵌套布局
- 定制toast,使用自定义的控件
- layout中静态使用自定义控件
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11171.html