Android开发贴士集合(Part 1~4)_最新动态_新闻资讯_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 新闻资讯 > 最新动态 > Android开发贴士集合(Part 1~4)

Android开发贴士集合(Part 1~4)

 2014/5/19 11:29:20    程序员俱乐部  我要评论(0)
  • 摘要:英文原文:AndroidTipsRound-Up(More:Part1Part2Part3Part4)近期的项目中本人已经每天发表一个关于Android的类和方法的小贴士,很多读者要求整理出这些小贴士的链接归档,所以每隔几周我都会总结一下。如果工作不是太忙的话,我也会在上面做一些注释。Android开发贴士集合(1)Activity.startActivities()——对于从app流的中部启动会非常好。TextUtils.isEmpty()—&mdash
  • 标签:android 开发 Android开发

  英文原文:Android Tips Round-Up(More: Part 1 Part 2 Part 3 Part 4)

  近期的项目中本人已经每天发表一个关于 Android 的类和方法的小贴士,很多读者要求整理出这些小贴士的链接归档,所以每隔几周我都会总结一下。如果工作不是太忙的话,我也会在上面做一些注释

  Android 开发贴士集合(1)

  Activity.startActivities ()——对于从 app 流的中部启动会非常好。

  TextUtils.isEmpty ()——一个普遍适用的简单工具类。

  Html.fromHtml ()——格式化 Html 的快速方法,本人认为它也不是非常快,所以我不是经常用它(我说不经常用它是为了重点突出这句话:请多手动构建 Spannable 来替换 Html.fromHtml),但是它对渲染从 web 上获取的文字还是很不错的。

  TextView.setError ()——在验证用户输入的时候用户体验很不错。

  Build.VERSION_CODES——它不仅仅描述了版本号,还总结了各 Android 版本的不同特性。

  Log.getStackTraceString ()——方便的日志工具。

  LayoutInflater.from ()——简化一系列冗长的 getSystemService ()调用的简单工具。

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

  PhoneNumberUtils.convertKeypadLettersToDigits——使得处理电话号码更方便,很多人都只提供字母,而不是数字。

  Context.getCacheDir ()——使用系统提供的缓存目录进行数据缓存,操作非常简单不过很多人不知道怎么使用。

  ArgbEvaluators——处理颜色的渐变。就像 Chris Banes 说的一样,这个类会进行很多自动装箱的操作,所以最好还是去掉它的逻辑自己去实现它。

  ContextThemeWrapper——方便在运行过程中更改主题。

  Space——轻量级的视图组件,可以跳过绘制的过程,对于需要占位符的任何场景来说都是很棒的。

  ValueAnimator.reverse ()——可以顺畅地取消动画效果,很赞。

  Android 开发贴士集合(2)

  DateUtils.formatDateTime ()——提供区域格式化时间/日期字符串的一站式服务。

  AlarmManager.setInexactRepeating——通过闹铃分组的方式来节省电量,即使你只调用一个 alarm 实例,它仍然比较好用(可以确保在使用完毕时自动调用 AlarmManager.cancel ()。

  Formatter.formatFileSize ()——一个区域化的文件大小格式化工具。

  ActionBar.hide () / .show ()——可以在 actionBar 显示或者隐藏的时候进行动画展示。可以在切换到全屏的时候更优雅。

  Linkify.addLinks ()——可以控制在 Text 上添加链接。

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

  Activity.onBackPressed ()——方便控制返回按钮,在需要自定义返回键的操作时候,可以用到。

  GestureDetector——可以监听动作事件和相关的监听器事件(点击,滚动,滑动等)。比自己实现系统的一些动作事件更简单。

  DrawFilter——可以让你操作 Canvas,即使没有调用 draw 方法。例如,可以在创建自定义 View 的时候设置一个 DrawFilter,给父 View 里面的所有 View 设置反别名。

  ActivityManager.getMemoryClass ()——可以让你清楚知道设备还剩多少内存。在计算怎么设置缓存大小的时候就很有用。

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

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

  DisplayMetrics.density——通过这个方法可以获取屏幕的密度,很多时候需要去掉系统自动缩放精度的功能,但是有时候在控制的时候也很有用(尤其是在自定义 View 的时候)。

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

  Android 开发贴士集合(3)

  UrlQuerySanitizer——使用这个工具可以方便对 URL 进行检查。

  Fragment.setArguments——因为在构建 Fragment 的时候不能加参数,所以这是个很好的东西,可以在创建 Fragment 之前设置参数(即使在 configuration 改变的时候仍然会导致销毁/重建)。

  DialogFragment.setShowsDialog ()——这是一个很巧妙的方式,DialogFragment 可以作为正常的 Fragment 显示!这里可以让 Fragment 承担双重任务。我通常在创建 Fragment 的时候把 onCreateView ()和 onCreateDialog ()都加上,就可以创建一个具有双重目的的 Fragment。

  FragmentManager.enableDebugLogging ()——在需要观察 Fragment 状态的时候会有帮助。

  LocalBroadcastManager——这个会比全局的 broadcast 更加安全,简单,快速。像 otto 这样的 Event buses 机制对你的应用场景更加有用。

  PhoneNumberUtils.formatNumber ()——顾名思义,这是对数字进行格式化操作的时候用的。

  Region.op ()——我发现在对比两个渲染之前的区域的时候很实用,如果你有两条路径,那么怎么知道它们是不是会重叠呢?使用这个方法就可以做到。

  Application.registerActivityLifecycleCallbacks——虽然缺少官方文档解释,不过我想它就是注册 Activity 的生命周期的一些回调方法(顾名思义),就是一个方便的工具。

  versionNameSuffix——这个 gradle 设置可以让你在基于不同构建类型的 manifest 中修改版本名这个属性,例如,如果需要在在 debug 版本中以”-SNAPSHOT”结尾,那么就可以轻松的看出当前是 debug 版还是 release 版。

  CursorJoiner——如果你是只使用一个数据库的话,使用 SQL 中的 join 就可以了,但是如果收到的数据是来自两个独立的 ContentProvider,那么 CursorJoiner 就很实用了。

  Genymotion——一个非常快的 Android 模拟器,本人一直在用。

  -nodpi——在没有特别定义的情况下,很多修饰符(-mdpi,-hdpi,-xdpi 等等)都会默认自动缩放 assets/dimensions,有时候我们需要保持显示一致,这种情况下就可以使用 -nodpi。

  BroadcastRecevier.setDebugUnregister ()——又一个方便的调试工具。

  Activity.recreate ()——强制让 Activity 重建。

  PackageManager.checkSignatures ()——如果同时安装了两个 app 的话,可以用这个方法检查。如果不进行签名检查的话,其他人可以轻易通过使用一样的包名来模仿你的 app。

  Android 开发贴士集合(4)

  Activity.isChangingConfigurations ()——如果在 Activity 中 configuration 会经常改变的话,使用这个方法就可以不用手动做保存状态的工作了。

  SearchRecentSuggestionsProvider——可以创建最近提示效果的 provider,是一个简单快速的方法。

  ViewTreeObserver——这是一个很棒的工具。可以进入到 VIew 里面,并监控 View 结构的各种状态,通常我都用来做 View 的测量操作(自定义视图中经常用到)。

  org.gradle.daemon=true——这句话可以帮助减少 Gradle 构建的时间,仅在命令行编译的时候用到,因为 Android Studio 已经这样使用了。

  DatabaseUtils——一个包含各种数据库操作的使用工具。

  android:weightSum (LinearLayout)——如果想使用 layout weights,但是却不想填充整个 LinearLayout 的话,就可以用 weightSum 来定义总的 weight 大小。

  android:duplicateParentState (View)——此方法可以使得子 View 可以复制父 View 的状态。比如如果一个 ViewGroup 是可点击的,那么可以用这个方法在它被点击的时候让它的子 View 都改变状态。

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

  android:fillViewport (ScrollView)——在这片文章中有详细介绍文章链接,可以解决在 ScrollView 中当内容不足的时候填不满屏幕的问题。

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

  android:enterFadeDuration/android:exitFadeDuration (Drawables)——此属性在 Drawable 具有多种状态的时候,可以定义它展示前的淡入淡出效果。

  android:scaleType (ImageView)——定义在 ImageView 中怎么缩放/剪裁图片,一般用的比较多的是“centerCrop”和“centerInside”。

  <merge>——此标签可以在另一个布局文件中包含别的布局文件,而不用再新建一个 ViewGroup,对于自定义 ViewGroup 的时候也需要用到;可以通过载入一个带有标签的布局文件来自动定义它的子部件。

  AtomicFile——通过使用备份文件进行文件的原子化操作。这个知识点之前我也写过,不过最好还是有出一个官方的版本比较好。

  原文链接: danlew   翻译: 伯乐在线 - chris

  译文链接: http://blog.jobbole.com/68006/

发表评论
用户名: 匿名