Android常用API
目录
1、[Android API简介](#android-api简介)
2、[UI与界面相关API](#ui与界面相关api)
[RecyclerView添加item间距](#recyclerview添加item间距)
[动态添加布局](#动态添加布局)
3、[资源管理相关API](#资源管理相关api)
[获取资源颜色快捷方法](#获取资源颜色快捷方法)
4、[事件处理与监听器相关API](#事件处理与监听器相关api)
[禁止用户按返回键关闭界面](#禁止用户按返回键关闭界面)
[监听EditText的输入改变](#监听edittext的输入改变)
5、[Fragment相关操作](#fragment相关操作)
[fragment代替布局,动态添加](#fragment代替布局动态添加)
[点击切换fragment](#点击切换fragment)
6、[网络和数据解析相关API](#网络和数据解析相关api)
[Retrofit](#retrofit)
[OKHttp](#okhttp)
[GSON](#gson)
7、[其他常用API](#其他常用api)
[使用ContextCompat](#使用contextcompat)
[设备库和NDK](#设备库和ndk)
8、[(#
Android API简介
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而无需访问源码,或理解内部工作机制的细节,在Android开发中,API接口给我们带来了极大的便捷,下面是整理的一些开发中常用的API接口。
UI与界面相关API
RecyclerView添加item间距
API:rv.addItemDecoration
示例代码:
rv_learn_direction.addItemDecoration(object : RecyclerView.ItemDecoration() { override fun getItemOffsets(outRect: Rect, itemPosition: Int, parent: RecyclerView?) { super.getItemOffsets(outRect, itemPosition, parent) outRect.right = UtilHelper.dip2px(mActivity, 16f) outRect.bottom = UtilHelper.dip2px(mActivity, 16f) } })
注意这个添加一次,也就是这代码只能运行一次,因为每次addItemDecoration
都是有效的,会叠加间距,所以一般放在初始化操作,不要放在接收数据,操作adapter时操作。
动态添加布局
API:LayoutInflater.from
示例代码:
LayoutInflater.from(mActivity).inflate(R.layout.login_study_plan_job_item, ll_job, false)
平常都是工具类封装好,希望没有封装时,也能随手写出来,注意:这个方法参数还有点玄学,自己研究了。
资源管理相关API
获取资源颜色快捷方法
API:ContextCompat.getColor(mActivity!!, R.color.m_red_one)
示例代码:
tv.setTextColor(ContextCompat.getColor(mActivity!!, R.color.m_red_one))
通过此API可以快速获取资源文件中的颜色值并应用到视图上。
事件处理与监听器相关API
禁止用户按返回键关闭界面
API:onKeyDown return true即可
示例代码:
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean { if (keyCode == KeyEvent.KEYCODE_BACK) { return true//不执行父类点击事件 } return super.onKeyDown(keyCode, event) }
通过重写onKeyDown
方法,可以拦截返回键事件,防止用户通过返回键关闭界面。
监听EditText的输入改变
API:addTextChangedListener
通过给EditText添加文本变化监听器,可以实现实时监控用户输入的功能,可以用于表单验证或者自动完成功能。
Fragment相关操作
fragment代替布局,动态添加
API:supportFragmentManager.beginTransaction()
示例代码:
val tr = supportFragmentManager.beginTransaction() tr.replace(R.id.fl_content, ActiveFragment.getInstance()) tr.commitAllowingStateLoss()
使用Fragment代替传统的布局文件,可以实现更灵活的UI管理和动态加载。
点击切换fragment
API:switchFragment
示例代码:
fun switchFragment(posFragment: Int) { var fragment: Fragment? = null when (posFragment) { 0 -> { if (ceoActiveFragment == null) { ceoActiveFragment = CEOActiveFragment.getInstance(source, position, sum, sheng_id, shi_id, qu_id) } fragment = ceoActiveFragment } 1 -> { if (ceoTaskFragment == null) { ceoTaskFragment = CEOTaskFragment.getInstance(source, position, sum, sheng_id, shi_id, qu_id) } fragment = ceoTaskFragment } } if (fragment == null) { return } val trx = supportFragmentManager.beginTransaction() //隐藏当前fragment if (null != mCurrentFragment) { trx.hide(mCurrentFragment!!) } if (!fragment.isAdded) { trx.add(R.id.fl_content, fragment) } else { trx.show(fragment) } mCurrentFragment = fragment trx.commitAllowingStateLoss() }
通过点击事件来切换不同的Fragment,实现单Activity多Fragment的应用结构。
网络和数据解析相关API
Retrofit
Retrofit简化了从Web API下载数据,解析成普通的Java对象(POJO),要从Github 上下载用户仓库的信息,你只需要编写下面的几行:
@GET("/users/{user}/repos") List<Repo> listRepos(@Path("user") String user);
你需要创建仓库信息类和数据类型,这些代码也可以自动生成,整个过程很简单,类似发送一次有参数的请求或发送POST或HEAD,Retrofit的特性之一可以将处理逻辑添加到请求和响应中,你可以添加数据到http请求头部,也可以拦截验证失败的响应重定向到登录界面。
OKHttp
OKHttp是Android版Http客户端,非常高效,支持SPDY、连接池、GZIP和 HTTP 缓存,默认情况下,OKHttp会自动处理常见的网络问题,像二次连接、SSL的握手问题,如果你的应用程序中集成了OKHttp,Retrofit默认会使用OKHttp处理其他网络层请求。
GSON
GSON是将JSON解析成POJO的Java库,GSON也可以将POJO解析成JSON,在Android中,数据对象存储在SharePreference更加方便,要使用GSON,首先需要创建相应的POJO数据,再用GSON解析为POJO对象,解析过程简单且非常高效,需要了解如何创建可以被GSON解析的POJO对象,请查看说明文档,Retrofit使用GSON解析JSON数据,下载Retrofit、OKHttp、GSON库文件,逐个添加jar文件到你的工程中,如果使用Android Studio,可以使用gradle同步这个工程,你可能已有一份API,如果你还在寻找API目录,我推荐ProgrammableWeb,在这个教程中,我们会解析Twitch.Tv的数据流,Twicht.tv请求数据流的JSON格式:http://api.justin.tv/api/stream/list.json,创建POJO:这部分很有趣,用我们获取到的数据自动创建对应的POJO,使用jsonschema2pojo,导入包名、类名和JSON数据,保存为私有类型,示例中展示的构造器无法使用,因为JSON数据的根元素是个数组,不是对象,将自动产生的POJOs粘贴到工程中就可以了,在我的示例工程中,他们在models包中,使用Retrofit下载(解析)API:创建REST Adapter:创建Adapter,类似设置endPoint,定义API接口:为需要连接的endPoint定义接口,下面示例中,使用limit和offset,这两个参数用来控制请求数据位置和大小,public interface TwitchTvApiInterface { @GET("/stream/list.json") void getStreams(@Query("limit") int limit, @Query("offset") int offset, Callback<List<JustinTvStreamData>> callback); } 你可能会注意到,我们期望返回的是一组JustinTvStreamData对象,也就是我们刚才自动产生的POJO,关于如何定义这个接口的更多信息,请参考Retrofit说明文档,创建Twitch.tv服务:现在我们已经建立了endPoint,定义了需要的接口,下面需要创建Twitch.TV服务,发送请求,TwitchTvApiInterface twitchTvService = restAdapter.create(TwitchTvApiInterface.class); Call<List<JustinTvStreamData>> call = twitchTvService.getStreams(limit, offset); call.enqueue(new Callback<List<JustinTvStreamData>>() { @Override public void success(List<JustinTvStreamData> streams, Response response) { //处理成功的结果 } @Override public void failure(RetrofitError error) { //处理错误的结果 } });
其他常用API
使用ContextCompat
ContextCompat是一个兼容性助手类,可以帮助我们在不同版本的Android系统上使用相同的API,获取资源颜色值时可以使用ContextCompat.getColor()
方法来确保兼容性。
设备库和NDK
Android提供了多种设备库来支持不同类型的设备开发,如Android Automotive Library用于车载应用开发,Android Game Development Kit libraries用于游戏开发等,Android NDK允许开发者使用C和C++语言编写高性能的本地代码,以提高应用性能。
本文介绍了Android开发中的一些常用API及其使用方法,掌握这些API不仅可以提高开发效率,还能使代码更加简洁易读,在实际开发过程中,建议多查阅官方文档并结合实践进行学习和应用,希望本文对你有所帮助!
各位小伙伴们,我刚刚为大家分享了有关“android常用api”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!