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\) 棵许愿 ...
随机推荐
- dijkstra算法学习笔记
dijkstra是一种单源最短路径算法,即求一个点到其他点的最短路.不能处理负边权. 最近某种广为人知的算法频繁被卡,让dijkstra逐渐成为了主流,甚至在初赛中鞭尸了SPFA(? dijkstra ...
- js的事件冒泡机制
js的事件冒泡机制呢,就是一个DOM树,一级一级向上冒的过程,最终是到document这个根节点这里.js的事件冒泡机制,就像是一个水泡在水底下,冒泡到水面的过程. 摘自醉清玄
- cve-2018-14515复现
一.环境 Windows NT WIN-RRI9T9SN85D 6.1 build 7600 (Windows 7 Business Edition) i586 Apache/2.4.23 (Win3 ...
- 博弈论基础之sg函数与nim
在算法竞赛中,博弈论题目往往是以icg.通俗的说就是两人交替操作,每步都各自合法,合法性与选手无关,只与游戏有关.往往我们需要求解在某一个游戏或几个游戏中的某个状态下,先手或后手谁会胜利的问题.就比如 ...
- python包-logging-hashlib-openpyxl模块-深浅拷贝-04
包 包: # 包是一系列模块文件的结合体,表现形式是文件夹,该文件夹内部通常会包含一个__init__.py文件,本质上还是一个模块 包呢,就是前两篇博客中提到的,模块的四种表现形式中的第三种 # 把 ...
- python字符编码-文件操作
字符编码 字符编码历史及发展 为什么有字符编码 ''' 原因:人们想要将数据存入计算机 计算机的能存储的信息都是二进制的数据 内存是基于电工作的,而电信号只有高低频两种,就用01来表示高低电频,所以计 ...
- 第二篇:"空空如也"的博客应用
文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 建立博客应用 我们已经建立了 django 博客的项目工程,并且成功地运行了它.不过到目前为止这一切都还只是 django 为 ...
- ssh,公钥和私钥,远程复制
ssh,公钥和私钥,远程复制 1.openssh 是一个提供远程访问控制的软件 2.ssh 远程主机用户@远程主机ip地址 ssh root@172.25.254.1 The authenticity ...
- selenium Java中常见等待的几种形式
前言 在自动化测试中,我们经常会碰到编写脚本过程中操作某个元素的时候, 需要等待页面加载完成后,才能对元素操作,否则会报错,提示页面元素不存在异常,我们需要等待元素加载完成后,才能继续操作,而Sele ...
- springcloud-熔断监控Hystrix Dashboard和Turbine
作者:纯洁的微笑出处:http://www.ityouknow.com/ 版权归作者所有,转载请注明出处 Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystri ...