您的位置:首页 > 移动开发 > Android开发

Android 开发技巧

2016-04-09 00:00 519 查看

一、UI相关:

Activity:

1. Activity.startActivities() 常用于在应用程序中间启动其他的Activity.
2.Activity.recreate() - 用于重建Activity.
3.Activity.isChangingConfigurations() - 如果activity中的Configuration会经常被改变的话,使用这方法不用手动保持了。
4.Activity.onBackPressed() 很方便的管理back键的方法,有时候需要自己控制返回键的事件的时候,可以重写一下。比如加入 “点两下back键退出” 功能。
Fragment:
1.Fragment.setArguments - Fragment间传递参数
2.DialogFragment.setShowsDialog() - 显示一个DialogFragment,这里可以控制它是否作为一个dialog
3.FragmentManager.enableDebugLogging() - 当你检测fragment状态时使用

动画:

1.ActivityOptions - 可以为activity添加动画

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

Text:

1.TextView.setError() 在验证用户输入的时候很棒
2.EditText.setError() - 对用户名,邮箱,手机什么的验证,会弹出一个popupwindow,效果很好

3.EditText判断是否为空:

String str = usernameET.getText().toString.trim();//这里trim()作用是去掉首位空格,防止不必要的错误
if(TextUtils.isEmpty(str )){
//为空
}


Html:

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

其他:

1.LayoutInflater.from() 顾名思义,用于Inflate一个layout,参数是layout的id.这个经常写Adapter的人会用的比较多.
2.Space space是Android 4.0中新增的一个控件,它实际上可以用来分隔不同的控件,其中形成一个空白的区域.这是一个轻量级的视图组件,它可以跳过Draw,对于需要占位符的任何场景来说都是很棒的。
3.ValueAnimator.reverse() 这个方法可以很顺利地取消正在运行的动画.我超喜欢.
4.ActionBar.hide()/.show() 顾名思义,隐藏和显示ActionBar,可以优雅地在全屏和带Actionbar之间转换。
5.Linkify.addLinks() 在Text上添加链接。很实用。
6.StaticLayout 在自定义 View 中渲染文字的时候很实用。
7.GestureDetector 用来监听和相应对应的手势事件,比如点击,长按,慢滑动,快滑动,用起来很简单,比你自己实现要方便许多。
8.DrawFilter 可以让你在不调用onDrew方法的情况下,操作canvas,比了个如,你可以在创建自定义 9.View 的时候设置一个 DrawFilter,给父 View 里面的所有 View 设置反别名。
10.ViewStub 它是一个初始化不做任何事情的 View,但是之后可以载入一个布局文件。在慢加载 View 中很适合做占位符。唯一的缺点就是不支持标签,所以如果你不太小心的话,可能会在视图结构中加入不需要的嵌套。
11.View.generateViewId() - *看名称是生成view 的id,不清楚是干嘛用的
12.ViewTreeObserver - View的检测工具,监控View各种状态
13.ViewConfiguration.getScaledTouchSlop() - 使用ViewConfiguration中提供的值以确保所有触摸交互都是统一的
14.ViewDragHelper - 可拖动的视图实现起来是比较复杂的,这个类可以很好的帮你。
15.LayoutInflater.from() - 大家应该常用它动态的加载布局,它简化了一系列getSystemService()调用的简单工具
16.Region.op() - 对比两个渲染之前的区域,如果你有两条路径,怎么知道它是否会重叠呢,使用这个
17.android:weightSum (LinearLayout) - 如果想使用weight但又不想填满整个屏幕,就可以用来定义总大小
18.android:duplicateParentState (View) - 可以使子View复制父View的方法。比如一个ViewGroup是可点击的,那可以用这个方法在它被点击时改变所有子View的状态。
19.android:clipChildren (ViewGroup) - 如果此属性设置为不可用,那么viewgroup的子View在绘制的时候会超出他的范围,做动画时常用到。
20.android:fillViewport (ScrollView) - 用来解决内容不足时添不满屏幕的问题。
21.android:tileMode (BitmapDrawable) - 可指定图片使用重复填充的模式。
22.android:scaleType (ImageView) - 定义Imageview中的缩放与裁剪。
23.<merge> - 此标签可以在另一个布局中包含别的布局,而不重新创建viewgroup,检查层级来优化视图
24.PopupWindow - 一个浮动视图,应用应该已经很广泛了。
25.ActionBar.getThemedContext() - 创建自己的actionBar主题时使用
26.ThumbnailUtils - 创建图像缩略图,并且可以创建视频的缩略图,就是我们平时图像采样用的
27.AdapterViewFlipper.fyiWillBeAdvancedByHostKThx() - 因为它有趣,没有其他原因(不明觉厉,不知道怎么个有趣法)


二、系统相关:

1.Log.getStackTraceString() 方便的日志类工具,方法Log.v()、Log.d()、Log.i()、Log.w()和Log.e()都是将信息打印到LogCat中,有时候需要将出错的信息插入到数据库或一个自定义的日志文件中,那么这种情况就需要将出错的信息以字符串的形式返回来,也就是使用static String getStackTraceString(Throwable tr)方法的时候.
2.ViewConfiguration.getScaledTouchSlop() 使用ViewConfiguration中提供的值以保证所有触摸的交互都是统一的。这个方法获取的值表示:用户的手滑动这个距离后,才判定为正在进行滑动.当然这个值也可以自己来决定.但是为了一致性,还是使用标准的值较好.
3.ContextThemeWrapper 方便在运行的时候修改主题.
4.Pair.create() 方便构建类和构造器的方法。
5.LocalBroadcastManager - 这要比全局的broadcast更加安全,简单,快速。
6.Application.registerActivityLifecycleCallbacks - *不懂,从名字你应该可以看出点所以然
7.-nodpi - 保持显示一致,这里边的不会做自动缩放。
8.BroadcastRecevier.setDebugUnregister() - 译文是一个有用的测试工具,但不是太懂是什么东西
9.PackageManager.checkSignatures() - 同时安装两个app时可以用这个进行签名检查。
10.org.gradle.daemon=true -gradle的设置项,仅在命令行使用。
11.ActivityManager.clearApplicationUserData() - 重置应用程序,注销用户的最简单方法
12.PackageManager.setComponentEnabledSetting() - 开启/关闭组件的方法。


三、数据处理:

SDCard:(待续,疑问)

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

数据类型处理:

1.SparseArray - 一个针对Map<Integer, Object>获这样的hashMap设计的类,原来不太懂,不清楚做了什么优化
2.Formatter.formatFileSize() 一个区域化的文件大小格式化工具。通俗来说就是把大小转换为MB,G,KB之类的字符串。
3.PhoneNumberUtils.convertKeypadLettersToDigits - 字母转化为数字,例如T9输入法,比如啊,a,b,c都会转化为2
4.PhoneNumberUtils.formatNumber() - 电话号码的格式化
5.PhoneNumberUtils.convertKeypadLettersToDigits 顾名思义.将字母转换为数字,类似于T9输入法,
6.UrlQuerySanitizer - *译文可能是对URL进行检测(但还是不太懂事干嘛)

Database:

1.DatabaseUtils - 包含各种数据库使用工具
2.SQLiteDatabase.yieldIfContendedSafely() - 暂停数据库事物来减少系统使用
3.SearchRecentSuggestionsProvider - 可以创建有提示效果的Provider
4.CursorJoiner - 如果你只使用一个数据库的话,那么使用SQL的join就可以了,但你如果你使用了两个独立的CursorJoiner 那么CursorJoiner就很实用了。

Date:

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

屏幕数据:

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

其他:

1.versionNameSuffix - 这个gradle设置为了方便的定义版本名,如当前版本是Debug还是Rrelease
2.Build.VERSION_CODES 这个标明了当前的版本号,在处理兼容性问题的时候经常会用到.点进去可以看到各个版本的不同特性
3.rgbEvaluator 用于处理颜色的渐变。就像 Chris Banes说的一样,这个类会进行很多自动装箱的操作,所以最好还是去掉它的逻辑自己去实现它。这个没用过,不明其所以然,回头再补充.
4.SystemClock.sleep() 这个方法在保证一定时间的 sleep 时很方便,通常我用来进行 debug 和模拟网络延时。
5.ActivityManager.getMemoryClass() 告诉你你的机器还有多少内存,在计算缓存大小的时候会比较有用.

四、模拟器

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

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

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

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

五、敏捷开发

ButterKnife

ButterKnife是一个专注于Android系统的View、Resource、Action注入框架。

官网:http://jakewharton.github.io/butterknife/

gitHub:https://github.com/JakeWharton/butterknife/

AndroidStudio使用ButterKnife插件:Android Studio中ButterKnife插件的安装与使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: