Android 开发技巧

Activity.startActivities() 常用于在应用程序中间启动其他的Activity.

TextUtils.isEmpty() 简单的工具类,用于检测是否为空

Html.fromHtml() 用于生成一个Html,参数可以是一个字符串.个人认为它不是很快,所以我不怎么经常去用.(我说不经常用它是为了重点突出这句话:请多手动构建 Spannable 来替换 Html.fromHtml),但是它对渲染从 web 上获取的文字还是很不错的。

TextView.setError() 在验证用户输入的时候很棒

Build.VERSION_CODES 这个标明了当前的版本号,在处理兼容性问题的时候经常会用到.点进去可以看到各个版本的不同特性

Log.getStackTraceString() 方便的日志类工具,方法Log.v()、Log.d()、Log.i()、Log.w()和Log.e()都是将信息打印到LogCat中,有时候需要将出错的信息插入到数据库或一个自定义的日志文件中,那么这种情况就需要将出错的信息以字符串的形式返回来,也就是使用static String getStackTraceString(Throwable tr)方法的时候.

LayoutInflater.from() 顾名思义,用于Inflate一个layout,参数是layout的id.这个经常写Adapter的人会用的比较多.

ViewConfiguration.getScaledTouchSlop() 使用 ViewConfiguration 中提供的值以保证所有触摸的交互都是统一的。这个方法获取的值表示:用户的手滑动这个距离后,才判定为正在进行滑动.当然这个值也可以自己来决定.但是为了一致性,还是使用标准的值较好.

PhoneNumberUtils.convertKeypadLettersToDigits 顾名思义.将字母转换为数字,类似于T9输入法,

Context.getCacheDir() 获取缓存数据文件夹的路径,很简单但是知道的人不多,这个路径通常在SD卡上(这里的SD卡指的是广义上的SD卡,包括外部存储和内部存储)Adnroid/data/您的应用程序包名/cache/  下面.测试的时候,可以去这里面看是否缓存成功.缓存在这里的好处是:不用自己再去手动创建文件夹,不用担心用户把自己创建的文件夹删掉,在应用程序卸载的时候,这里会被清空,使用第三方的清理工具的时候,这里也会被清空.

ArgbEvaluator 用于处理颜色的渐变。就像 Chris Banes 说的一样,这个类会进行很多自动装箱的操作,所以最好还是去掉它的逻辑自己去实现它。这个没用过,不明其所以然,回头再补充.

ContextThemeWrapper 方便在运行的时候修改主题.

Space space是Android 4.0中新增的一个控件,它实际上可以用来分隔不同的控件,其中形成一个空白的区域.这是一个轻量级的视图组件,它可以跳过Draw,对于需要占位符的任何场景来说都是很棒的。

ValueAnimator.reverse() 这个方法可以很顺利地取消正在运行的动画.我超喜欢.

DateUtils.formatDateTime() 用来进行区域格式化工作,输出格式化和本地化的时间或者日期。

AlarmManager.setInexactRepeating 通过闹铃分组的方式省电,即使你只调用了一个闹钟,这也是一个好的选择,(可以确保在使用完毕时自动调用 AlarmManager.cancel ()。原文说的比较抽象,这里详细说一下:setInexactRepeating指的是设置非准确闹钟,使用方法:alarmManager.setInexactRepeating(AlarmManager.RTC, startTime,intervalL, pendingIntent),非准确闹钟只能保证大致的时间间隔,但是不一定准确,可能出现设置间隔为30分钟,但是实际上一次间隔20分钟,另一次间隔40分钟。它的最大的好处是可以合并闹钟事件,比如间隔设置每30分钟一次,不唤醒休眠,在休眠8小时后已经积累了16个闹钟事件,而在手机被唤醒的时候,非准时闹钟可以把16个事件合并为一个, 所以这么看来,非准时闹钟一般来说比较节约能源。

Formatter.formatFileSize() 一个区域化的文件大小格式化工具。通俗来说就是把大小转换为MB,G,KB之类的字符串。

ActionBar.hide()/.show() 顾名思义,隐藏和显示ActionBar,可以优雅地在全屏和带Actionbar之间转换。

Linkify.addLinks() 在Text上添加链接。很实用。

StaticLayout 在自定义 View 中渲染文字的时候很实用。

Activity.onBackPressed() 很方便的管理back键的方法,有时候需要自己控制返回键的事件的时候,可以重写一下。比如加入 “点两下back键退出” 功能。

GestureDetector 用来监听和相应对应的手势事件,比如点击,长按,慢滑动,快滑动,用起来很简单,比你自己实现要方便许多。

DrawFilter 可以让你在不调用onDrew方法的情况下,操作canvas,比了个如,你可以在创建自定义 View 的时候设置一个 DrawFilter,给父 View 里面的所有 View 设置反别名。

ActivityManager.getMemoryClass() 告诉你你的机器还有多少内存,在计算缓存大小的时候会比较有用.

ViewStub 它是一个初始化不做任何事情的 View,但是之后可以载入一个布局文件。在慢加载 View 中很适合做占位符。唯一的缺点就是不支持标签,所以如果你不太小心的话,可能会在视图结构中加入不需要的嵌套。

SystemClock.sleep() 这个方法在保证一定时间的 sleep 时很方便,通常我用来进行 debug 和模拟网络延时。

DisplayMetrics.density 这个方法你可以获取设备像素密度,大部分时候最好让系统来自动进行缩放资源之类的操作,但是有时候控制的效果会更好一些.(尤其是在自定义View的时候).

Pair.create() 方便构建类和构造器的方法。

EditText.setError() - 对用户名,邮箱,手机什么的验证,会弹出一个popupwindow,效果很好




LayoutInflater.from() - 大家应该常用它动态的加载布局,它简化了一系列getSystemService()调用的简单工具


ViewConfiguration.getScaledTouchSlop() - 使用ViewConfiguration中提供的值以确保所有触摸交互都是统一的


PhoneNumberUtils.convertKeypadLettersToDigits - 字母转化为数字,例如T9输入法,比如啊,a,b,c都会转化为2


ContextThemeWrapper - 在运行时去修改主题。


Space - 很棒的分隔符,4.0+使用


ValueAnimator.reverse() - 很流畅的去取消正在运行的动画。


DateUtils.formatDateTime() - 格式化时间,我们可能不太常用。


AlarmManager.setInexactRepeating - 通过闹钟分组来省电,就如在不唤醒休眠下的间隔中有10个闹钟,在唤醒后将合并为一个,所以可以节约资源。


Formatter.formatFileSize() - 就是转化文件大小,KB M G等之间。


ActionBar.hide()/.show() - 如名,就是控制actionBar的显隐。


Linkify.addLinks() - 给Textview加上链接。


StaticLayout - 在自定义View中渲染文字很实用。


Activity.onBackPressed() - 简单的管理后退操作,比如我们的Double Back press to exit


GestureDetector - 用来监听动作事件和相关监听事件,如点击,滚动,滑动,比自己实现系统的一些事件更简单


DrawFilter - *可以让你在没有调用Draw的情况下调用Canvas,可以在创建自定义View时调用DrawFilter(For example, you could create a custom View which sets a DrawFilter which anti-aliases the draws of the parent View.不明白)


ActivityManager.getMemoryClass() -获取剩余内存


ViewStub - 这个应该也很多人用过,站位的View,之后可载入一个布局


DisplayMetrics.density - 常用来获取设备宽高


Pair.create() - *看半天也没明白是在干嘛


UrlQuerySanitizer - *译文可能是对URL进行检测(但还是不太懂事干嘛)


Fragment.setArguments - Fragment间传递参数


DialogFragment.setShowsDialog() - 显示一个DialogFragment,这里可以控制它是否作为一个dialog


FragmentManager.enableDebugLogging() - 当你检测fragment状态时使用


LocalBroadcastManager - 这要比全局的broadcast更加安全,简单,快速。


PhoneNumberUtils.formatNumber() - 电话号码的格式化


Region.op() - 对比两个渲染之前的区域,如果你有两条路径,怎么知道它是否会重叠呢,使用这个


Application.registerActivityLifecycleCallbacks - *不懂,从名字你应该可以看出点所以然


versionNameSuffix - 这个gradle设置为了方便的定义版本名,如当前版本是Debug还是Rrelease


CursorJoiner - 如果你只使用一个数据库的话,那么使用SQL的join就可以了,但你如果你使用了两个独立的CursorJoiner 那么CursorJoiner就很实用了。


Genymotion - 这是模拟器,不是类,非常快的模拟器,可能比你手机还快


-nodpi - 保持显示一致,这里边的不会做自动缩放。


BroadcastRecevier.setDebugUnregister() - 译文是一个有用的测试工具,但不是太懂是什么东西


Activity.recreate() - 用于重建Activity.


PackageManager.checkSignatures() - 同时安装两个app时可以用这个进行签名检查。


Activity.isChangingConfigurations() - 如果activity中的Configuration会经常被改变的话,使用这方法不用手动保持了。


SearchRecentSuggestionsProvider - 可以创建有提示效果的Provider


ViewTreeObserver - View的检测工具,监控View各种状态


org.gradle.daemon=true -gradle的设置项,仅在命令行使用。


DatabaseUtils - 包含各种数据库使用工具


android:weightSum (LinearLayout) - 如果想使用weight但又不想填满整个屏幕,就可以用来定义总大小


android:duplicateParentState (View) - 可以使子View复制父View的方法。比如一个ViewGroup是可点击的,那可以用这个方法在它被点击时改变所有子View的状态。


android:clipChildren (ViewGroup) - 如果此属性设置为不可用,那么viewgroup的子View在绘制的时候会超出他的范围,做动画时常用到。


android:fillViewport (ScrollView) - 用来解决内容不足时添不满屏幕的问题。


android:tileMode (BitmapDrawable) - 可指定图片使用重复填充的模式。


android:enterFadeDuration/android:exitFadeDuration (Drawables) -Drawable有多种状态时,可以定义它展示前的淡入淡出。


android:scaleType (ImageView) - 定义Imageview中的缩放与裁剪。


<merge> - 此标签可以在另一个布局中包含别的布局,而不重新创建viewgroup,检查层级来优化视图



ViewDragHelper - 可拖动的视图实现起来是比较复杂的,这个类可以很好的帮你。


PopupWindow - 一个浮动视图,应用应该已经很广泛了。


ActionBar.getThemedContext() - 创建自己的actionBar主题时使用


ThumbnailUtils - 创建图像缩略图,并且可以创建视频的缩略图,就是我们平时图像采样用的


Context.getExternalFilesDir() - 获取SD卡目录,很常用


SparseArray - 一个针对Map<Integer, Object>获这样的hashMap设计的类,原来不太懂,不清楚做了什么优化


PackageManager.setComponentEnabledSetting() - 开启/关闭组件的方法。


SQLiteDatabase.yieldIfContendedSafely() - 暂停数据库事物来减少系统使用


Environment.getExternalStoragePublicDirectory() - 获取SD卡公共路径,如铃声,音乐什么的。


View.generateViewId() - *看名称是生成view 的id,不清楚是干嘛用的


ActivityManager.clearApplicationUserData() - 重置应用程序,注销用户的最简单方法


ActivityOptions - 可以为activity添加动画


AdapterViewFlipper.fyiWillBeAdvancedByHostKThx() - 因为它有趣,没有其他原因(不明觉厉,不知道怎么个有趣法)


ViewParent.requestDisallowInterceptTouchEvent() - 事件的打断,从父视图中夺取控制权


Andy - 又一款速度流畅的免费安卓 Android 模拟器 (支持手机无线控制电脑模拟器):

http://www.iplaysoft.com/andy.html

genymotion:

http://www.linuxidc.com/Linux/2013-07/88079.htm



你可能感兴趣的:(Android 开发技巧)