课程链接:
https://www.icourse163.org/course/0809NNZY001-1206134802?utm_campaign=share&utm_medium=androidShare&utm_source=#/info
-
android studio常用快捷键
logd
用FindViewByMe代码生成工具,从布局文件生成java类代码 -
常用控件。
textview,radiobox,checkbox,button
view,是textview的父类,常用监听器有onClickListener -
弹出窗口。
popupwindows,alertdialog,customdialog,
android.content.DiaglogInterface.OnclickListener弹出对话框的监听
AlertDiaglog.Builder builder 建立对话框
builder.show() 弹出 -
activity。
4.1 intent。显式和隐式2种
4.2. activity传递数据
方法1:
方法2:使用bundle传递一揽子数据。
方法3: 带result的传递
4.3 生命周期
start,resume,pause,stop,destoy
4.4 启动模式
标准、singleTop、singleTask、singleInstance -
ListView和RecycleView
RecycleView是ListView的可替换的新组件
常用的数据适配器Adapter
常用的监听器
RecyclerView下拉监听addOnScrollListener
RecyclerView可以显示多种ViewHolder,很灵活,
比如一个显示item列表,一个底部显示正在加载的进度提示,
但是必须在onCreateViewHolder、onBindViewHolder中区分不同的ViewHolder对象,
根据getItemViewType()区分。
使用布局管理器取得最后一行数据
recyclerView.getLayoutManager().findLastVisibleItemPosition()
SwipeRefreshLayout下拉刷新布局 + RecyclerView
- ViewPager和Fragment
数据更新后,要notify通知UI线程(viewPager的适配器)。Adapter.notifyDataSetChanged();通知数据变化,更新UI。
监听器:onPageChangeListener
Fragment
getSupportFragmentManager()管理对象
beginTransaction()事务对象,
然后可以add(),hide(),show()。最后commit()
TabLayout有Tab页的布局。
tabLayout.setupWithViewPager()把viewPager关联到tabLayout中
- 网络编程
7.1 volley框架。(1、创建队列。2、创建request。3、把request加入队列)
图片缓存。(1、创建队列。2、ImageLoader、ImageListener)
Volley是一个Android网络通信框架。
发生请求StringRequest(POST传数据/GET不传数据,uri,Response.Listener正确返回的监听,Response.error出错的监听)
PostMan工具可以测试http api接口。浏览器一般测试GET请求,所以POST请求用PostMan.
7.2 json框架gson
添加Gson框架到工程中。
toJson()。bean对象转换为json字符串。
fromJson()。json字符串转换为bean对象。
www.json.cn在线json解析
JSONObject是{},JSONArray是[]。
java对象和Json之间的互转。类库有Jackson和Gson
fromJson可以反序列化为bean对象、List<对象>。反序列化List需要使用TypeToken getType(){}
在线JSON字符串转Java实体类。www.bejson.com
-
DrawerLayout和NavigationDrawerActivity实现侧滑导航。
-
Material Palette网站在线实现Google Material Design风格配色。
-
Application系统组件。
-
小组件。。
11.1 FloatingActionButton悬浮按钮。
11.2 SnackBar屏幕底部消息,类似于Toast。
11.3 ProgressBar进度提示,显示可见/隐藏
11.4 SpannableString实现有颜色的文字
11.5 SwipeRefreshLayout上拉监听setOnRefreshListener
11.6 cardview带圆角的卡片
-
ImageLoader
ImageLoader是一个加载图片的开源框架。单例模式ImageLoader.getInstance()
显示图片display(uri,ImageVIew,MyApplication.DisplayImageOptions);DisplayImageOptions放的是一些设置项 -
打包APK
-
数据存储
SharedPreferences主要存储key-value,保存为xml文件,一般用于保存用户账户等信息。
-
XML解析
-
SQLite
SQLiteOpenHelper用于创建和更新数据库
onCreate数据库第一次被创建时调用,创建表
onUpgrade数据库更新时调用,如数据版本更新、增加表、修改表字段
getWritableDatabase创建数据库操作对象
getReadableDatabase读数据的数据库操作对象
SQLiteOpenHelper 中有两个抽象方法,分别是 onCreate()和 onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后分别在这两 个方法中去实现创建、升级数据库的逻辑。
SQLiteOpenHelper 中 还 有 两 个 非 常 重 要 的 实 例 方 法 , getReadableDatabase() 和 getWritableDatabase()。这两个方法都可以创建或打开一个现有的数据库(如果数据库已存在 则直接打开,否则创建一个新的数据库),并返回一个可对数据库进行读写操作的对象。
Java类ContentValues储存键值对,用于数据库操作
- broadcast广播
在清单文件中加入注册广播、过滤器
BroadcastReceiver广播接收者onRecive方法
注册广播有2种方式,常驻型和非常驻型。
getResultData()获取用户拨打的电话号码
setResultData()设置新号码到拨号盘
发送自定义广播
intent.setAction(str)自定义广播标识
sendBroadcast(intent)
无序广播(同时接收广播)和有序广播(顺序接收广播)
sendOrderedBroadcast()发送有序广播
清单文件Manifest.xml中定义广播接收器优先级
拦截广播abortBroadcast()
开机启动事件也是一个广播
(Object[]) intent.getExtras().get(“pdus”)pdus系统关键字,所有短信
SmsMessage.createFromPdu()短信转为SmsMessage对象
- service服务
服务的创建、服务通信,服务的启动方式、生命周期
启动服务Context.startService()或bindService()
Thread线程
Handler对象,用于主线程和子线程之间通信
handleMessage(Message msg)。msg.what判断哪个子线程传来的数据
远程服务通信通过AIDL接口实现。
AIDL默认public,通过IDE生成java文件
服务代理类继承外部的XXservice.Stub(内部通信服务代理类继承IBinder)
Manifest.xml中也要加过滤,写好包名
SeekBar进度条
监听器OnSeekBarChangeListener
- ContentProvider
ContentProvider内容提供者,保存和检索数据,不同app共享数据的接口
uri对象标识内容提供者
uri.parse(String str)
uriMatcher辅助工具类用于匹配uri
内容观察者ContentObserver内容变化的监听
onChange()方法
ContentUris.withAppendedId(uri,id)在字符串后面附加id
getContext().getContentResolver().notifyChange(uri,null)通知数据变化
启动OnCreate时候,注册ContentObserver