Android开发中的小技巧(1)

LocalBroadcastManager

  导入support-v4就可使用LocalBroadcasrManager,和普通的广播相比,LocalBroadcast的范围只是本应内,所以更有效率,更省资源

UrlQuerySanitizer

  一个很方便用来处理url链接的工具类,之前开发过程中遇到需要处理支付宝网页url,获取里面post参数,当时使用String的各种接口进行处理,如果用UrlQuerySanitizer的话就简单多了。比如现在有个Url=http://example.com/?name=Mark,我们使用UrlQuerySanitizer拿到name的值:

UrlQuerySanitizer sanitizer =newUrlQuerySanitizer(
        "http://example.com/?name=Mark");  
        sanitizer.setAllowUnregisteredParamaters(true);  
String name = sanitizer.getValue("name");

android.telephony.PhoneNumberUtils

  PhoneNumverUtils提供了一系列方法用来格式化电话号码

String num = "031185203009";  
PhoneNumberUtils util = new PhoneNumberUtils();  
String numFormated =  util.formatNumber(num,"CN");  

checkSignatures(String pkg1, String pkg2)

PackageManager public abstract int **checkSignatures** (String pkg1, String pkg2)

检查两个apk安装包的签名是否一样,一样的话返回值>0否则返回值<0

  Comparethe signatures of two packages to determine if the same signature appears in both of them. If they do contain the same signature, then they are allowed special privileges when working with each other: they can share the same user-id, run instrumentation against each other, etc.

Parameters
pkg1: First package name whose signature will be compared.
pkg2:Second package name whose signature will be compared.

Returns

Returns an integer indicating whether all signatures on the two packages match. The value is >= 0 (SIGNATURE_MATCH) if all signatures match or < 0 if there is not a match (SIGNATURE_NO_MATCH or SIGNATURE_UNKNOWN_PACKAGE).

ViewTreeObserver

  • 可以注册监听正在屏幕上显示的视图树中任何视图状态的变化,我经常用来视图初始化完成后获取某个控件的尺寸。

DatabaseUtils

  • 一个包装了一系列数据库操作方法的工具类

android:duplicateParentState/android:addStatedFromChildren

  • 使用这个属性来实现点击状态父控件和子控件同步。但使用过程中需注意这两个属性只是传递点击状态而不会执行点击事件。

android:clipChildren

  • 设置这个属性后子控件就可以在父控件的范围之外进行绘制了,编写动画时再也不用一层多余的FrameLayout。

android:fillViewport

  • 当开发者需要设置一个内容不足以填充整个屏幕的ScrollView全屏时,设置fill_parent是不起作用的,那么使用这个属性吧。

android:tileMode

  • 用来设置Bitmap显示方式,有平铺、重复等。例如设置重复显示
<LinearLayout             xmlns:android="http://schemas.android.com/apk/res/android"    
     android:id="@+id/MainLayout"       
     android:layout_width="fill_parent"    
     android:layout_height="fill_parent"    
     android:orientation="vertical"    
     android:background="@drawable/backrepeat"    
>   

backrepeat.xml

<bitmap     
    xmlns:android="http://schemas.android.com/apk/res/android"     
    android:src="@drawable/repeatimg"     
    android:tileMode="repeat"     
    android:dither="true" />  

ThumbnailUtils

可以很方便的创建视频的缩略图,甚至还可以指定缩略图的尺寸

// Create a video thumbnail for a video
static Bitmap createVideoThumbnail(String filePath, int kind)
//Creates a centered bitmap of the desired size.
static Bitmap extractThumbnail(Bitmap source, int width, int height,int options)
//Creates a centered bitmap of the desired size.
static Bitmap extractThumbnail(Bitmap source, int width, int height)

SparseArray

  • SparseArray是Android为 类型的HashMap专门写的类,目的是为了提供效率,其核心算法是折半查找。

setComponentEnabledSetting (ComponentName componentName, int newState, int flags)

PackageManger public abstract void setComponentEnabledSetting (ComponentName componentName, int newState, int flags)
  • 使用这个方法可以开启和禁用四大组件。参考android 禁用和开启四大组件的方法博文,发现这个方法可以作为后期性能优化方法之一。

generateViewId ()

View public static int generateViewId ()

Generate a value suitable for use in setId(int). This value will not collide with ID values generated at build time by aapt for R.id.;

动态生成控件的福利啊,以后再也不用担心动态控件id冲突了。

clearApplicationUserData ()

ActivityManager public boolean clearApplicationUserData ()
  • 一键清除应用数据,不用再手动一个个clear了,但是是API 19才提供的接口。

你可能感兴趣的:(【Android开发进阶】)