Android 常用小代码

来源:互联网 发布:sql注入漏洞怎样防御 编辑:程序博客网 时间:2024/05/23 19:21

Resources.getSystem().getDisplayMetrics().density  获取屏幕密度

通过重载 ViewGroup 的 dispatchDraw 可以实现一个简单的蒙版效果。canvas.drawRect(0, mContentView.getTranslationY(), getWidth(), getHeight(), mMaskPaint);

new 出来的 View 可以用 View.generateViewId() 生成 id,系统保证唯一。

占位View  android Space控件

TypedValue.applyDimension() 首先这个方法我们可以用来对sp dp 和 px 之间的单位转换

TextUtils.isEmpty() 如果传入的String 为NULL或者Length为0的话就返回 true。

TextView.setError() 设置文本框错误提醒

PhoneNumberUtils.convertKeypadLettersToDigits 这个方法简单粗暴,会将输入的字母根据键盘上的映射转换为数字。

ArgbEvaluator ArgbEvaluator.evaluate(float fraction, Object startValue, Object endValue);根据一个起始颜色值和一个结束颜色值以及一个偏移量生成一个新的颜色,分分钟实现类似于微信底部栏滑动颜色渐变。

ValueAnimator.reverse() 顺畅的取消动画效果

DateUtils.formatDateTime()) 这个方法可以输出相应格式化的时间或者日期

Formatter.formatFileSize() 这个方法会格式化数据的大小,根据输入的字节大小,返回 B KB MB GB 等等(最大支持到 PB)。当然要注意的是输入的最大值是 Long.MAX_VALUE.

Pair.create() 这个类 可以用来存储存储一”组”数据。但不是key和value的关系。

Linkify.addLinks() 这个类可以更方便的为文本添加超链接。

  • 遍历HashMap的最佳方法

public static void printMap(Map mp) {    Iterator it = mp.entrySet().iterator();    while (it.hasNext()) {        Map.Entry pair = (Map.Entry)it.next();        System.out.println(pair.getKey() + " = " + pair.getValue());        it.remove(); // avoids a ConcurrentModificationException    }}
类继承之间的调用顺序 父类static成员 -> 子类static成员 -> 父类普通成员初始化和初始化块 -> 父类构造方法 -> 子类普通成员初始化和初始化块 -> 子类构造方法
android listview中的消息被软键盘遮挡了,在设置listview的时候加上android:transcriptMode="normal"就好了
TextUtils 是一个非常好用的工具类,把 List 转成字符串,逗号分隔,逗号分隔的 String 字符串,切割成 List ,分别可以用 TextUtils 的 join 和 split 方法。如果要对 List 去重,则可以用 Collection 的 frequency 方法。
    Arrays类中的一系列关于数组操作的工具方法:binarySearch(),asList(),equals(),sort(),toString(),copyOfRange()等;Collections类中的一系列关于集合操作的工具方法:sort(),reverse()等;

    UrlQuerySanitizer——使用这个工具可以方便对 URL 进行检查。

    SystemClock.sleep() 这个方法在保证一定时间的 sleep 时很方便,通常我用来进行 debug 和模拟网络延时。

    ActivityOptions ——方便的定义两个Activity切换的动画。 使用ActivityOptionsCompat 可以很好解决旧版本的兼容问题。

    getParent().requestDisallowInterceptTouchEvent(true);剥夺父view对touch事件的处理权,谁用谁知道。

    HandlerThread,代替不停new Thread开子线程的重复体力写法。

    IntentService,一个可以干完活后自己去死且不需要我们去管理子线程的Service

    android:animateLayoutChanges="true",LinearLayout中添加View的动画的办法,支持通过setLayoutTransition()自定义动画。

    includeFontPadding="false",TextView默认上下是有一定的padding的,有时候我们可能不需要上下这部分留白,加上它即可。

    WeakHashMap,直接使用HashMap有时候会带来内存溢出的风险,使用WaekHashMap实例化Map。当使用者不再有对象引用的时候,WeakHashMap将自动被移除对应Key值的对象。

    TouchDelegate可用于更改View的触摸区域。场景:比如在RecyclerView的ItemView里包含了CheckBox组件, 然后想实现点击ItemView的时候,也可以触发CheckBox,就可以使用此类

    Activity.recreate重新创建Activity。有什么用呢?可以在程序更换主题后,立马刷新当前Activity,而不会有明显的重启Activity的动画。

    android:animateLayoutChanges 这是一个非常酷炫的属性。在父布局加上 android:animateLayoutChanges="true" 后,如果触发了layout方法(比如它的子View设置为GONE),系统就会自动帮你加上布局改变时的动画特效!!


    0 0
    原创粉丝点击