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来解决这个问 ...
随机推荐
- php上传文件大小限制
和你的配置文件有关.改一下PHP配置文件php.ini给你总结下相关配置,自己去改吧 1.php.ini:upload_max_filesize 所上传的文件的最大大小.默认值2M. 2.php.in ...
- php正则失效-最大回溯(pcre.backtrack_limit)/递归限制
有时候,我们觉得,没有什么可以让我们快乐,我们甚至忘记了如何微笑.但是,当我们被一群乐观.欢乐的人包围的时候,他们从内心深处散发出来的欢迎一定会感染你. 这组照片中,你会看到真正的幸福和快乐的面孔,我 ...
- cocos2d-x实战 C++卷 学习笔记--第6章 场景与层
前言: 一个场景(Scene)是由多个层(Layer)组成,而且层的个数要至少是1,不能为0. 场景切换 场景切换相关函数 1)void runWithScene(Scene* scene) 该函 ...
- OC班级类
// // MyClass.h // OC2_班级类 // // Created by zhangxueming on 15/6/12. // Copyright (c) 2015年 zhangxue ...
- 函数-头文件//Calculator.h
// // Calculator.h // 函数-头文件 // // Created by zhangxueming on 15/6/2. // Copyright (c) 2015年 zhangxu ...
- iOS 成员变量的作用范围
/* 成员变量的作用范围: @public:在任何地方都能直接访问对象的成员变量 @private:只能在当前类的对象方法中直接访问,如果子类要访问需要调用父类的get/set方法 @protecte ...
- 模拟请求之 HTTP_Request2
简单安装: pear install HTTP_Request2 使用例子: <?php require_once 'HTTP/Request2.php'; $request = new HTT ...
- PHP学习心得(二)——实用脚本
<?php 来表示 PHP 标识符的起始,然后放入 PHP 语句并通过加上一个终止标识符 ?> 来退出 PHP 模式 调用函数phpinfo(),将会看到很多自己系统的信息,以及预定义变量 ...
- dataTable 禁止显示信息
$("#id").DataTable({ "info": false, // 禁止显示信息 });
- 转最简便安装python+selenium-webdriver环境方法
最简便安装python+selenium-webdriver环境方法 from:http://www.easonhan.info/python/2013/12/07/active-python-ins ...