Android老司机搬砖小技巧
作为一名Android世界的搬运工,每天搬砖已经够苦够累了,走在坑坑洼洼的道路一不小心就掉坑里了。
SDK常用工具类
Android SDK中本身就拥有很多轮子,熟悉这些轮子,可以提高我们的搬砖效率。
android.text.TextUtils
字符串操作常用方法:isEmpty() ,join(),split()等
if(!TextUtils.isEmpty(text)){
//do something
}
android.webkit.URLUtil
链接相关常用方法:isHttpUrl(),isNetworkUrl(),decode()等
android.util.Patterns 或 android.support.v4.util.PatternsCompat
该类定义了许多常用正则表达式常量,可直接拿来用,例如:IP地址IP_ADDRESS,网址WEB_URL,Email地址EMAIL_ADDRESS,电话PHONE。
有了它,妈妈再也不用担心我正则表达式的问题了。
Matcher urlMatcher = Patterns.WEB_URL.matcher(text);
if (urlMatcher.find()) {
//find url
}android.telephony.PhoneNumberUtils
电话相关工具类
android.text.format.Formatter
格式化文件大小,以GB,MB,KB为单位。
android.media.ThumbnailUtils
创建图片或视频缩略图
常用方法:createImageThumbnail(),createVideoThumbnail()
android.database.DatabaseUtils
数据库操作相关工具类
常见的坑
以下经验是AC在开车时的出现事故的小笔记。其中的解决方案,由于飚车环境差异和AC本人的能力有限,各位老司机可以酌情参考,同时也欢迎老司机评论指出。
Handler处理异步操作时 用
isFinishing()判断当前的Activity是否存在: 比如在联网请求数据回调回来之后,在Handler的handleMessage()方法中,用isFinishing()判断当前的Activity是否存在,否则极易出现空指针等异常。在ListFragment中set footer,不要在
onCreateView()中设置; 要在onActivityCreate()中设置 否则会Caused by: java.lang.IllegalStateException: Content view not yet created。如果页面中的的样式如果出现了很奇怪的渲染(花屏,闪烁等异常),看看所在的Activity或者View是否添加了硬件加速。
setCustomAnimations方法要在replace,remove等方法之前,否则设置无效。
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.push_up_out, 0);
ft.replace(R.id.frame_content,mFragment);在onCreate中获取到View的高度和宽度,直接调用
View.getHeight()或View.getWidth(),均得到0。应该使用以下方式获取View的高度或宽度。mView.post(()->{
Log.d("width:"+mView.getWidth()+",height:"+mView.getWidth());
});ActivityA通过
startActivityForResult()启动了ActivityB。如果ActivityB的launchMode是singleTop或singleTask就要注意了,ActivityA的onActivityResult(int requestCode,int resultCode,Intent data)方法中的resultCode一定是Activity.RESULT_CANCELED。在
startActivity的时候闪退并出现了以下log:- java.lang.SecurityException: Unable to find app for caller android.app.ApplicationThreadProxy。This log means that your app is having trouble handling a communication intent. Sometimes problems like this can be cause by sending an intent with big extras. Try to reduce the dimension of the image or, and this is the best way, save your image on the sd and put in the extras only the Uri of that image。
- android.os.TransactionTooLargeException
注意:不要在intent中传递大量的数据数据(例如List,大的图片等),否则会抛异常。
drawable 中的selector文件 如果使用
android:exitFadeDuration="@android:integer/config_shortAnimTime"这个属性,那么不同的手机可能会有不同的效果,慎用!!在实现WebView与JS交互的过程中,如果遇到点击后JS方法无响应,应该注意一下问题:(1)WebView.addJavascriptInterface(new AndroidClick(), "android");这个方法的别名android是否与JS中的对象名称一致如 (2)WebView需要实现注册这个回调函数。
WebView.setWebChromeClient(new WebChromeClient(){
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
return super.onJsAlert(view, url, message, result);
}
});(3)如果发布的APP有进行混淆,那么AndroidClick这个JS 与 JAVA交互的类需要proguard.cfg文件忽略这个类的混淆,否则混淆后JS将执行不了。
keepclassmembers class net.angrycode.js2java.AndroidClick{
*;
}TextView实现简单的图文,可以使用TextView的drawableTop等属性来设置文本上的图片;还可以配合ImageSpan使用来设置图片。
AlertDialog 按确定按钮不消失的方法
AlertDialog dialog = builder.create();
dialog.setCanceledOnTouchOutside(true);
dialog.show(); dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> {
String text = editText.getText().toString().trim();
if (TextUtils.isEmpty(text)){
ToastUtils.showToast(this,R.string.say_something);
return;
}
//这里执行对话框消失
dialog.dismiss();
});
微信关注我们,可以获取更多

Android老司机搬砖小技巧的更多相关文章
- 开发Android应用 提升性能的小技巧
前 言 2015年,Android OS 目前在手机操作系统的市场占有率已达59%,权威机构预计,Android市场占有率在2016年将达到63%,由于Android的开放性,未来占有率还将不断增加, ...
- Android Snackbar使用方法及小技巧-design
Snackbar和Toast相似,都是为了给用户提供交互信息,Snackbar是固定在底部的,显示时从下往上滑出 要使用Snackbar,需要在项目的build.gradle中添加依赖 depende ...
- 如何进入百度、阿里,一个6年Android老司机的面经
花絮 也许会有人感叹某些人的运气比较好,但是他们不曾知道对方吃过多少苦,受过多少委屈.某些时候就是需要我们用心去发现突破点,然后顺势而上,抓住机遇,那么你将会走向另外一条大道,成就另外一个全新的自我. ...
- android 操作sqlite的一点小技巧
1.android 在sqlite插入数据时,是非常耗时的操作,原因是sqlite缺省会为每个插入操作开启一个事务,当数量变多的时候,自然时间就变得很慢,这时候可以考虑在插入等操作时先开启一个事务,再 ...
- Android Studio之build.gradle小技巧
一: 当你工程引用android 的support包的时候,常常会这样写: dependencies { compile 'com.android.support:recyclerview-v7:22 ...
- 【Android应用开发】分享一个录制 Android 屏幕 gif 格式的小技巧
因为写博客总是需要录制 Android 软件的演示效果, 研究了将近一小时找到了合适的工具; 录制流程 : -- 1. 录制 Android 手机屏幕内容 : 使用 拍大师 软件录制 Android ...
- Android代码的几点小技巧
1)View的状态保存与恢复dispatchRestoreInstanceStateonRestoreInstanceStateonSaveInstanceState 2)Service的前台服务使 ...
- Android简易实战教程--第二十二话《自定义组合控件模拟qq登录下拉框和其中的一些”小技巧”》
转载此文章请注明出处:点击打开链接 http://blog.csdn.net/qq_32059827/article/details/52313516 首先,很荣幸此专栏能被CSDN推荐到主页.荣 ...
- [UOJ#132][BZOJ4200][luogu_P2304][NOI2015]小园丁与老司机
[UOJ#132][BZOJ4200][luogu_P2304][NOI2015]小园丁与老司机 试题描述 小园丁 Mr. S 负责看管一片田野,田野可以看作一个二维平面.田野上有 \(n\) 棵许愿 ...
随机推荐
- JAVA获取公网ip
在ipv4地址稀缺的今天,分配到公网ip几乎是不可能的,但是我拨号之后的ip竟然是公网IP. 将自己的电脑作为服务器·,做点好玩的程序,就成为了可能. 由于运营商的ip是动态分配的公网ip的所以就需要 ...
- MediatR-进程内的消息通信框架
MediatR是一款进程内的消息订阅.发布框架,提供了Send方法用于发布到单个处理程序.Publish方法发布到多个处理程序,使用起来非常方便.目前支持 .NET Framework4.5..NET ...
- 新手小白之学习python一飞冲天日志之—基本数据类型,条件控制语句
python的历史 04年目前最流行的WEB框架Django诞生 python2:源码不统一,有重复的功能代码 python3:源码统一,没有重复的功能代码 python是一个什么编程语言 编译型:编 ...
- Linux学习之安装jdk
下载jdk for linux jdk for linux oracle download 卸载已有的jdk (1)查询是否安装java软件: rpm -qa|grep java (2)卸载jdk: ...
- HTML 去调table表单里面td之间的间距
首先为大家展示一下最原始的代码和效果.直接在table中用td划分的表格会默认隐藏边框. 接下来我们用css来增加样式,为table增加边框. table { border: 1px solid # ...
- win8上安装sql server (2008 and 2008 R2)存在兼容性问题怎么解决
安装sql2008R2之前,需要先下载"AccessDatabaseEngine"组件并安装(百度上搜索下载就可以了),打补丁重启,再安装sql2008,安装时候提示兼容性问 ...
- Java EE产生的背景
为了满足开发多层体系结构的企业级应用的需求,Java公司的创始人Sun公司在早期的J2SE(Java 2 Platform Standard Edition)基础上,针对企业级应用的各种需求,提出了J ...
- Linux系统安装jdk——.tar.gz版(old)
这里简单地阐述一下rpm.deb.tar.gz的区别. rpm格式的软件包适用于基于Red Hat发行版的系统,如Red Hat Linux.SUSE.Fedora. deb格式的软件包则是适用于基于 ...
- .Net MVC 动态生成LayUI tree
.Net MVC 动态生成LayUI tree 最近在做项目的过程中需要用到Tree插件,所以找了一堆Tree发现LayUI的Tree样式比较好看,所以开始搞! 1.Layui部分 1.1 首先引用文 ...
- MacBook Air多出一块磁盘?
今天将MAC的系统升级到Mojave,启动之后发现系统挂载的磁盘变了,我记得升级之前文件系统是挂载在/dev/disk0上的,但是升级之后,文件系统挂载在/dev/disk1上了. 用diskutil ...