Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[分享]关于知乎上出现的Android开发中,有哪些让你觉得相见恨晚的方法、类或接口?感觉很不错,大家在这里总结下吧! #219

Open
l123456789jy opened this issue Aug 7, 2015 · 6 comments

Comments

@l123456789jy
Copy link

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() 这个方法可以很顺利地取消正在运行的动画。
这个是我看比较好的一个复制下来了!希望大家在这里汇总下!

@joure
Copy link

joure commented Aug 7, 2015

原文地址:
http://www.zhihu.com/question/33636939#answer-18276269

1、Throwable接口中的getStackTrace()方法,根据这个方法可以得到函数的逐层调用地址,其返回值为StackTraceElement[];

2、StackTraceElement类,其中四个方法getClassName(),getFileName(),getLineNumber(),getMethodName()在调试程序打印Log时非常有用;

3、UncaughtExceptionHandler接口,再好的代码异常难免,利用此接口可以处理未捕获的异常;

4、Resources类中的getIdentifier(name, defType, defPackage)方法,根据资源名称获取其ID,做UI时经常用到;

5、View中的isShown()方法,以前都是用view.getVisibility() == View.VISIBLE来判断的(╯□╰);

6、Arrays类中的asList(T... array)方法,数组转List集合;反过来List.toArray();

7、android.text.format.Formatter类中formatFileSize(Context, long)方法,用来格式化文件Size(B → KB → MB → GB);

8、android.media.ThumbnailUtils类,用来获取媒体(图片、视频)缩略图;

9、String类中的format(String, Object...)方法,用来格式化strings.xml中的字符串(谢 @droider An提示:Context类中getString(int, Object... )方法用起来更加方便);

10、View类中的三个方法:callOnClick(),performClick(),performLongClick(),用于触发View的点击事件;

11、TextUtils类中的isEmpty(String)方法,判断字符串是否为null或"";

12、TextView类中的append(String)方法,添加文本;

13、View类中的getDrawingCache()等一系列方法,目前只知道可以用来截图;

14、DecimalFormat类,用于字串格式化包括指定位数、百分数、科学计数法等;

15、System类中的arraycopy(src, srcPos, dest, destPos, length)方法,用来copy数组;

16、Fragment类中的onHiddenChanged(boolean)方法,使用FragmentTransaction中的hide(),show()时貌似Fragment的其它生命周期方法都不会被调用,太坑爹!

17、Activity类中的onWindowFocusChanged(boolean)方法;

18、View类中的getLocationInWindow(int[])方法和getLocationOnScreen(int[])方法,获取View在窗口/屏幕中的位置;

19、TextView类中的setTransformationMethod(TransformationMethod)方法,可用来实现“显示密码”功能;

20、TextWatcher接口,用来监听文本输入框内容的改变;

21、View类中的setSelected(boolean)方法结合android:state_selected=""用来实现图片选中效果;

22、Surface设置透明:SurfaceView.setZOrderOnTop(true);
SurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);但是会挡住其它控件;

23、ListView或GridView类中的setFastScrollEnabled(boolean)方法,用来设置快速滚动滑块是否可见,当然前提是item够多;

24、PageTransformer接口,用来自定义ViewPager页面切换动画,用setPageTransformer(boolean, PageTransformer)方法来进行设置;

25、apache提供的一系列jar包:commons-lang.jar,commons-collections.jar,commons-beanutils.jar等,里面很多方法可能是你曾经用几十几百行代码实现过的,但是执行效率或许要差很多,比如:ArrayUtils,StringUtils……;

26、AndroidTestCase类,Android单元测试;

27、Activity类中的onNewIntent(intent)方法。

@l123456789jy l123456789jy changed the title [分享]关于知乎上出现的Android开发中,有哪些让你觉得相见恨晚的方法、类或接口?感觉很不错,能不能放到这里? [分享]关于知乎上出现的Android开发中,有哪些让你觉得相见恨晚的方法、类或接口?感觉很不错,大家在这里总结下吧! Aug 7, 2015
@yang-chao
Copy link

@joure View.isShown()会判断它的父 view 的显示状态,所以在很多只需要看当前 view 显示状态的情况下,效率比直接用 visibility 低一些

@maoruibin
Copy link

View.isShown()有坑!

@liuling07
Copy link

android:clipChildren="false"属性可以让子View超出父容器的范围。

@zhangranran
Copy link

@liuling07 android:clipChildren="false"慎用,有的机型不行

@ChoicesWang
Copy link

android:clipChildren="false"慎用,有的机型不行。好像没有硬件加速的不行。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants