Android开发中一些被冷落但却很有用的类和方法
MediaMetadataRetriever
顾名思义,就是用来获取媒体文件一些相关信息的类。包括一首歌的标题,作者,专辑封面和名称,时长,比特率等等。如果是视频的话,可以获取视频的长宽,预览图。
http://developer.android.com/intl/zh-cn/reference/android/media/MediaMetadataRetriever.html
TouchDelegate
用于更改View的触摸区域。场景:比如在RecyclerView的ItemView里包含了CheckBox组件, 然后想实现点击ItemView的时候,也可以触发CheckBox,就可以使用此类。
http://developer.android.com/intl/zh-cn/training/gestures/viewgroup.html#delegate
ArgbEvaluator
用于计算不同颜色值之间的插值,配合ValueAnimator.ofObject
或者ViewPager.PageTransformer
使用,可以实现不同颜色之间的平滑过渡。
http://developer.android.com/intl/zh-cn/reference/android/animation/ArgbEvaluator.html
Palette
用于提取一张图片的颜色。
http://developer.android.com/intl/zh-cn/reference/android/support/v7/graphics/Palette.html
ViewDragHelper
做过自定义ViewGroup的童鞋都应该知道这个东西吧,用来处理触摸事件的神器,妈妈再也不用担心我自定义控件了。
http://developer.android.com/intl/zh-cn/reference/android/support/v4/widget/ViewDragHelper.html
PageTransformer
用于定义ViewPager页面切换时的动画效果(淡入淡出,放大缩小神马的…)官方有例子,直接看吧。
http://developer.android.com/intl/zh-cn/training/animation/screen-slide.html
ViewFlipper
可以实现简单轮播效果的一个组件。
http://developer.android.com/intl/zh-cn/reference/android/widget/ViewFlipper.html
LocalBroadcastManager
用于在APP内部使用的,效率和安全性更好的广播工具类。
Messenger
进程间通信的一个工具类。内部也是由AIDL实现的,但是用起来超级方便。
http://developer.android.com/intl/zh-cn/reference/android/os/Messenger.html
Formatter.formatFileSize
根据文件大小自动转为以KB, MB, GB为单位的工具类。想想以前都是自己计算的…
http://developer.android.com/intl/zh-cn/reference/android/text/format/Formatter.html
Activity.recreate
重新创建Activity。有什么用呢?可以在程序更换主题后,立马刷新当前Activity,而不会有明显的重启Activity的动画。
http://developer.android.com/intl/zh-cn/reference/android/app/Activity.html#recreate%28%29
View.getContext
顾名思义,就不用解释了吧…以前在写RecyclerView的Adapter的时候,为了使用LayoutInflater,经常傻乎乎地在构造函数中传入一个外部的context….是不是只有我不知道而已(笑cry脸)
http://developer.android.com/intl/zh-cn/reference/android/view/View.html#getContext()
View.post
方便在非UI线程对界面进行修改,与Handler的作用类似。并且由于post的Runnable会保证在该View绘制完成的前提下才调用,所以一般也可以用于获取View的宽高。
http://developer.android.com/intl/zh-cn/reference/android/view/View.html#post(java.lang.Runnable)
Activity.runOnUiThread
与View.post
类似,方便在非UI线程中对界面进行修改。
Fragment.setUserVisibleHint
Fragment可以重写此方法,然后根据参数的布尔值(true的话表示当前Fragment对用户可见),来执行一些逻辑。
android:animateLayoutChanges
这是一个非常酷炫的属性。在父布局加上 android:animateLayoutChanges="true"
后,如果触发了layout方法(比如它的子View设置为GONE),系统就会自动帮你加上布局改变时的动画特效!!
http://developer.android.com/intl/zh-cn/training/animation/layout.html
android:clipToPadding
设置父view是否允许其子view在它的padding(这里指的是父View的padding)中绘制。是不是有点绕?举个实际场景吧:假如有个ListView,我们想要在初始位置时,第一项Item离顶部有10dp的距离,就可以在ListView的布局中加入android:clipToPadding="false"
android:paddingTop="10dp"
即可。是不是很方便呢?
Android开发中一些被冷落但却很有用的类和方法的更多相关文章
- 转:Android开发中的MVP架构(最后链接资源不错)
Android开发中的MVP架构 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解MVP和DDD,但是我们的新项目还是决定通过MVP来构建. 这篇文章是我通过研究和 ...
- 转: Android开发中的MVP架构详解(附加链接比较不错)
转: http://www.codeceo.com/article/android-mvp-artch.html 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解M ...
- 设计模式笔记之二:Android开发中的MVP架构(转)
写在前面,本博客来源于公众号文章:http://mp.weixin.qq.com/s?__biz=MzA3MDMyMjkzNg==&mid=402435540&idx=1&sn ...
- Android开发中JavaBean类和序列化知识的理解
原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/6296121.html Android开发中,我们经常用到JavaBean类以及序列化的知识,但经 ...
- Android学习探索之Java 8 在Android 开发中的应用
前言: Java 8推出已经将近2年多了,引入很多革命性变化,加入了函数式编程的特征,使基于行为的编程成为可能,同时减化了各种设计模式的实现方式,是Java有史以来最重要的更新.但是Android上, ...
- android开发中fragment获取context
在用到fragment时无法使用.this来指定当前context内容,android开发中fragment获取context,可以使用getActivity().getApplicationCont ...
- java中的反射机制在Android开发中的用处
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反 ...
- Android开发中的输入合法性检验
Why ? 合法性检查对于程序的健壮性具有重要作用.在Android开发中,良好的合法性检查设计机制可以使程序更加清晰,产生bug更少,交互更加友好. What ? 合法性检查的目的在于确定边界.对于 ...
- 在android开发中使用multdex的方法-IT蓝豹为你整理
Android系统在安装应用时,往往需要优化Dex,而由于处理工具DexOpt对id数目的限制,导致其处理的数目不能超过65536个,因此在Android开发中,需要使用到MultiDex来解决这个问 ...
随机推荐
- mysqlimport 导入文件到数据库命令
mysqlimport -h 172.16.145.125 -u ocetl -pocetl test --fields-terminated-by='|' '/home/ocetl/tmp_use ...
- ios错误修改了系统头文件
一.打开终端 二.进入Xcode 输入命令: cd /Users/apple/Library/Developer/Xcode/ 三.打开当前 输入命令: open . 四.将DerivedData ...
- spring mvc 全局异常处理
package com.tool; public class MyException extends Exception{ public String Msg; public String ErrCo ...
- 【制作镜像Win*】系统配置
向livibirt.xml插入Line 6-13所示代码,即加入两个virtio-serial设备: <!--vnc方式登录,端口号自动分配,自动加1,可以通过virsh vncdisplay来 ...
- c&c++函数的参数和返回值的传递终结版
c++函数的参数和返回值的传递方式有三种:值传递.指针传递和引用传递. 在这之前先看几个例子: 一, int a=10; int b=a; b+=10; 此时b是a的一个拷贝,改变b的值,a并不会受到 ...
- DB2数据库中提高INSERT性能详解
分类: Linux INSERT 处理过程概述 首先让我们快速地看看插入一行时的处理步骤.这些步骤中的每一步都有优化的潜力,对此我们在后面会一一讨论. 在客户机准备 语句.对于动态 SQL,在 ...
- 使用Notepad++将多行数据合并成一行
1.按Ctrl+F,弹出“替换”的窗口: 2.选择“替换”菜单: 3.“查找目标”内容输入为:\r\n: 4.“替换为”内容为空: 5.“查找模式”选择为正则表达式: 6.设置好之后,点击“全部替换” ...
- 【JSP&Servlet学习笔记】4.会话管理
Http本身是无状态通信协议,要进行会话管理的基本原理,就是将需要维护的状态回应给浏览器,由浏览器在下次请求时主动发送状态信息,让Web应用程序“得知”请求之间的关联. 隐藏字段是将状态信息以窗体中看 ...
- hdu 5009 Paint Pearls
首先把具有相同颜色的点缩成一个点,即数据离散化. 然后使用dp[i]表示涂满前i个点的最小代价.对于第i+1个点,有两种情况: 1)自己单独涂,即dp[i+1] = dp[i] + 1 2)从第k个节 ...
- new static() 和 new self() 的区别异同
长夜漫漫啊! 今天领导本地搭建一个站.发现用PHP 5.2 搭建不起来,站PHP代码里面有很多5.3以上的部分,领导让苦逼我更改在5.2下能运行. 改着改着发现了一个地方 return new sta ...