android常用api大全,Android开发个人总结常用的api
前言
这只是记录下开发过程中常用的api,是经常可能忘了导致去百度的
我还是希望大家最好记在脑子里,需要也提倡查找api,但我感觉只有记住了才能融会贯通,满足需求。每次查出来的,怕不了解,不敢修改等等就不好了
我会记住确定不会忘了,我就会删除一条。如果第二次进来看到怎不见了呢,也不用吃惊哈,序号也会没有
开始吧
1、禁止用户按返回键关闭界面
Api: onKeyDown return true即可
代码如下:
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK ) {
return true//不执行父类点击事件
}
return super.onKeyDown(keyCode, event)
}
2、获取资源颜色快捷方法
Api: ContextCompat.getColor(mActivity!!, R.color.m_red_one)
示例代码:
tv.setTextColor(ContextCompat.getColor(mActivity!!, R.color.m_red_one))
3、动态添加布局
Api: LayoutInflater.from
平常都是工具类封装好,希望没有封装时,也能随手写出来
注意:这个方法参数还有点玄学,自己研究了
示例代码:
LayoutInflater.from(mActivity).inflate(R.layout.login_study_plan_job_item, ll_job, false)
4、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时操作。
5、监听EditText的输入改变
Api:addTextChangedListener
6、adapter的item的点击事件
Api:onItemClickListener
示例代码:
getAdapter()?.onItemClickListener = object :BaseQuickAdapter.OnItemClickListener{
override fun onItemClick(adapter: BaseQuickAdapter?, view: View?, position: Int) {
val item = getAdapter()!!.data[position]
}
}
}
8、adapter的item里面某个控件的点击事件
helper.addOnClickListener(R.id.tv_report)
getAdapter()?.setOnItemChildClickListener { _, view, position ->
when (view.id) {
R.id.tv_report -> {
7、fragment代替布局,动态添加
示例代码:
val tr = supportFragmentManager.beginTransaction()
tr.replace(R.id.fl_content, ActiveFragment.getInstance())
tr.commitAllowingStateLoss()
8、点击切换fragment
示例代码:
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()
}
9、TextView也可以中间省略号
android:ellipsize="middle"
示例代码:
android:ellipsize="middle"
android:maxWidth="110dp"
android:singleLine="true"
10、canvas绘制图片
drawBitmap
示例代码:
canvas.drawBitmap(bitmap, left, top, paintImage);
11、以SP单位设置TextView的textSize
TypedValue.COMPLEX_UNIT_SP
示例代码:
bar_title.setTextSize(TypedValue.COMPLEX_UNIT_SP,17f)
12、TextView显示html富文本
示例代码:
String result = "实时更新中,当前股票行情:%d";
result = String.format(result, (int) (Math.random() * 5000 + 1000));
mTv.setText(Html.fromHtml(result));
13、放快速双击
RxView.clicks(tv_video_price)
.throttleFirst(2, TimeUnit.SECONDS)
.subscribe(object : Consumer {
override fun accept(t: Any?) {
//弹出视频详情,视频暂停
}
})
14、对于Application,Service,Activity三者的应用场景
context.png
new View(context) 也可以用Application的
15、Android自带的判断是否有某个权限
ContextCompat.checkSelfPermission
示例代码:
if (ContextCompat.checkSelfPermission(activity!!, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
//不具有打电话权限,需要进行权限申请
ToastUtils.showCustomToast("没有电话权限")
return
}
判断某个权限是否永久拒绝(需要在拒绝里面进一步判断):
if(!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CALL_PHONE)){
}
16、单独刷新某一Item
notifyItemChanged(position)
示例代码:
if (getHeaderLayoutCount() > 0) {
notifyItemChanged(i + getHeaderLayoutCount(), "点赞成功");
} else {
notifyItemChanged(i, "点赞成功");
}
break;
17、控件执行补间动画
AnimationUtils.loadAnimation
示例代码:
var translateAnim = AnimationUtils.loadAnimation(this,R.anim.view_anim)
tv_content.startAnimation(translateAnim)
18、控件执行属性动画
ObjectAnimator.ofFloat
示例代码:
ObjectAnimator animator = ObjectAnimator.ofFloat(tv,"rotationX",0,270,0);
animator.setDuration(2000);
animator.start();
19、正确的List遍历方法
Iterator iterator = list.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
20、requestLayout,invalidate,postInvalidate
invalidate :只调onDraw(),在UI线程调用
postInvalidate:只调onDraw(),在子线程调用
requestLayout:onMeasure、onLayout、onDraw ,在UI线程调用
21、Float相加减精度问题
切记float类型的相加减运算多次很容易出问题
示例代码:
public static double addTwo(double a, double b) {
BigDecimal bd1 = new BigDecimal(Double.toString(a));
BigDecimal bd2 = new BigDecimal(Double.toString(b));
return bd1.add(bd2).doubleValue();
}
android常用api大全,Android开发个人总结常用的api相关推荐
- android面试题大全 android面试题总结
android面试题大全 android面试题总结 1.Android系统的架构 Android系统架构之应用程序 Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端 ...
- 疯狂Java和Android面试题大全(Android版)
疯狂Java和Android面试题大全(Android版) 本大全每个月会定期更新,索取网址:http://www.fkjava.org Java核心技术部分 Java核心技术部分的面试题,可能覆盖J ...
- android常用api大全,Android API详解大全.pdf
Android API详解大全 Android -- TextView 一.TextView的API 1.1 结构 java.lang.Object ↳ android.view.View ↳ and ...
- android linearlayout属性大全,Android中LinearLayout布局的常用属性总结读书笔记
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 原CSDN博客已弃用,文章会逐渐迁移过来. 应朋友们反馈的Android基础薄弱的问题,决定出一套Android基础教程 ...
- Android 面试题大全 android中级----进阶------ 知识点
// Android 的中等进阶知识点理解 1 内存泄漏是什么 ?? 2 Android oom 内存溢出 ?? 3 Retrofit详解 ?? 4 Rxjava详解 ?? 5 Android 性能优 ...
- android界面图标大全,Android UI设计常识和Android UI界面欣赏酷站推荐
这几天都是iphone6的信息.25学堂根据群里网友的一些建议.今天把android设计的一些基本规范和设计尺寸常识再来罗列一下. 之前25学堂认真整理的关于android ui设计规范的知识点如下: ...
- api arx autocad_AutoCAD开发选择----ObjectARX还是.net API(转载)
本文基于AutoCAD 2006新推出的.NET API为工具,介绍了在.NET平台下对AutoCAD进行二次开发的技术,并与目前常用的VBA.ObjectARX作了对比.同时讨论了如何弥补.NET ...
- html5 百度地图api文档,开发指南--百度地图JavaScript API大众版.doc
开发指南--百度地图JavaScriptAPI大众版开发指南--百度地图JavaScriptAPI大众版 简介 JavaScript API大众版 JavaScript API功能介绍 百度地图Jav ...
- android常用api大全,Android相关常用API……
android.provider.MediaStore里包含了相关的Image,Video,Audio信息,可通过managedQuery方法来查询和遍历. Android中的AdapterView使 ...
最新文章
- MySQL Profiling 的使用
- 音视频编解码的国际标准
- Sagemaker快速学习
- Springboot中艾特Controller和艾特RestController之间的区别
- visual studio无法更新_VS Code Python 扩展 5 月更新
- 二叉树先序、中序和后序遍历
- 我的Android进阶之旅------修改Android签名证书keystore的密码、别名alias以及别名密码...
- 【android studio】解决android studio drawable新建项目时只有一个drawable目录的问题
- Python-判断变量类型和继承链-type isinstance
- Colaboratory读取谷歌云盘(Google drive)中的数据(2020年3月28日更新)
- 华为方会提供一份CRS(客户需求)和SOW(工作任务书)
- 中望3d快捷键命令大全_中望3D快捷键设置
- 计算机辅助工程试卷,《计算机辅助工程软件(UG)》试卷10–2答.doc
- ACM------吃在工大(合工大OJ 1359)
- 3DMAx Panda Directx Exporter 导出 X插件
- java手机号中间4位使用*替换
- java增函数的单变量求解,最底层码农的不易谁能体会?谁心里苦谁知道啊。
- 基于SSM的校园音乐点歌系统平台
- JVM类加载过程,JDK和JER区别
- python Django 连接mysql数据库创建表详细全过程
热门文章
- 机器学习案例:预测自行车流量——基于Scikit-Learn
- 计算机网络,概念,发展历史,分类,协议
- R配对样本t检验(PAIRED T-TEST​​​​​​​)
- 好心情:吃精神科药物药不见效?你可能忽视了血药浓度
- Linux,你了解多少!
- python中function takes exactly_Python error TypeError: function takes exactly 1 argument (5 given)
- 记一次搭建 nodebb 论坛
- iOS自定义身份证键盘
- C语言中task的用法,C++11中std::packaged_task的使用详解
- 单位内网访问外网的二种方式