Android那些相见恨晚的代码,值得收藏!

版权声明:本文是博主原创文章,不得转载本文任何内容。原文地址: https://blog.csdn.net/smile_Running/article/details/81875626

                         【声明】:未经许可,禁止转载!

· 收集

    可能有你见过的,可能也有你没见过的。

1、剥夺父view对touch事件的处理权,在子View中做到反拦截。

      getParent().requestDisallowInterceptTouchEvent(true);

2、用于根据一个起始颜色值和一个结束颜色值以及一个偏移量生成一个新的颜色,分分钟实现类似于微信底部栏滑动颜色渐变。

      ArgbEvaluator.evaluate(float fraction, Object startValue, Object endValue);

3、返回一个新的Bitmap,capture原始图片的alpha值。有的时候我们需要动态的修改一个元素的背景图片又不希望使用多张图片的时候,通过这个方法,结合Canvas和Paint可以动态的修改一个纯色Bitmap的颜色。

      Bitmap.extractAlpha ();

4、安卓5.0加入的可以提取一个Bitmap中突出颜色的类,结合上面的Bitmap.extractAlpha。

      Palette类

5、实现阴影效果(中央扩散、线性扩散等)。

      GradientDrawable(资源文件或代码方式都可以实现)

6、实现多个view的循环切换,可自定义动画效果,且可针对单个切换指定动画。

      <ViewFlipper />,一个类似ViewPager的控件

7、针对特定View关闭硬件加速的方法,在自定义View时有些方法在开启硬件加速的时候没有效果的问题,通常我们关闭硬件加速都是在清单文件中通过<application android:hardwareAccelerated="false" ...>。

      View.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

8、我们经常见到在处理Touch事件的时候分别定义一个downX,一个downY用来存储一个坐标。如果坐标少还好,如果要记录的坐标过多那代码就不好看了。用PointF(float x, float y);来描述一个坐标点会清楚很多。

      PointF,graphics包中的一个类

9、ListView的item中CheckBox等元素抢焦点导致item点击事件无法响应时,除了给对应的元素设置 focusable,更简单的是在item根布局加上。

      android:descendantFocusability=”blocksDescendants”

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

      includeFontPadding="false"

11、获取触发移动事件的最小距离。自定义View处理touch事件的时候,有的时候需要判断用户是否真的存在移动。

      ViewConfiguration.getScaledTouchSlop();

12、顺畅的取消动画效果。

      ValueAnimator.reverse();

13、有的时候一块区域需要根据情况显示不同的布局,通常我们都会通过setVisibility的方法来显示和隐藏不同的布局,但是这样默认是全部加载的,用ViewStub可以更好的提升性能。

       <ViewStub />

14、在Activity中重写此方法,会在内存紧张的时候回调(支持多个级别),便于我们主动的进行资源释放,避免OOM。

       onTrimMemory(int level);

15、Date虽然是个万能接口,但是它真的不好用。有了这俩,终于可以愉快的处理日期时间了。

      JAVA 8 新增的 LocalDate和LocalTime接口

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

      WeakHashMap

17、根据资源名称获取其ID,做UI时经常用到。

      Resources类的getIdentifier(name, defType, defPackage);

18、格式化文件Size(B → KB → MB → GB)。

      android.text.format.Formatter类中formatFileSize(Context, long);

19、用来获取媒体(图片、视频)缩略图。

      android.media.ThumbnailUtils类

20、View类中的三个方法,用于触发View的点击事件。

      callOnClick()performClick()、performLongClick()

21、用于字串格式化包括指定位数、百分数、科学计数法等。

      DecimalFormat类

22、获取View在窗口/屏幕中的位置。

      View类的getLocationInWindow(int[]);和getLocationOnScreen(int[]);

23、TextView的一个方法可用来实现“显示密码”功能。

      setTransformationMethod(TransformationMethod);

24、用来监听文本输入框内容的改变,可用来实现一系列具有特殊功能的文本输入框。

       TextWatcher接口

25、View类中的setSelected(boolean);结合

       android:state_selected=" ",用来实现图片选中效果。

26、SurfaceView设置透明效果

       SurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT); //但是会挡住其它控件

       SurfaceView.setZOrderOnTop(true);

27、ListView或GridView,用来设置快速滚动滑块是否可见,前提是item够多。

       setFastScrollEnabled(boolean);

28、隐藏/显示ActionBar,可以优雅地在全屏和带Actionbar之间切换。

       ActionBar.hide()ActionBar.show() ;

29、在Text上添加链接,很实用。

       Linkify.addLinks() ;

30、获得机器剩余内存,在计算缓存大小的时候会比较有用。

       ActivityManager.getMemoryClass() ;

©版权所有:https://blog.csdn.net/smile_Running/article/details/81875626

猜你喜欢

转载自blog.csdn.net/smile_Running/article/details/81875626