一、功能类
1. BigDecimal类
如果你和金额打交道,强烈建议你使用此类。
2.RelativeLayout constraintlayout 属性
图上所示,实现上面的功能,RelativeLayout用layout_alignTop和layout_alignEnd;constraintlayout用layout_constraintEnd_toEndOf和layout_constraintTop_toTopOf。当然现在更推荐你使用constraintlayout。
3. 标题栏向上凹陷,之后恢复
这个问题纯粹是为了记录一下,因为以前的项目就遇到过(轻轻扇自己一巴掌,为何没记住,白白浪费时间)。问题的产生:闪屏界面设置全屏,跳转到主界面,主界面标题栏就会产生上面所说问题。解决方法:跳转时调用下面代码恢复下即可。
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
复制代码
4. Imagivew
图上所示功能,简单自定义即可实现,当然欢迎各位大佬分享跟好的方式,留言告诉我!
public void setText(String content) {
this.content = content;
if (TextUtils.isEmpty(content)) {
this.setColorFilter(context.getResources().getColor(R.color.transparent));
} else {
this.setColorFilter(context.getResources().getColor(R.color.sort_bg));
}
this.invalidate();
}
/**
* 图片中心绘制文本
*
* @param canvas 画布
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
final float textWidth = paint.measureText(content);
float x = getWidth() / 2 - textWidth / 2;
Paint.FontMetrics fontMetrics = paint.getFontMetrics();
float dy = (fontMetrics.descent - fontMetrics.ascent) / 2 - fontMetrics.descent;
float y = getHeight() / 2 + dy;
canvas.drawText(content, x, y, paint);
}
复制代码
二、建议类
1. 方法传参
当一个方法传参过多时,建议你用一个类去承接各个参数。例如:近期项目中有个接口要传参二十来个,开始时,考虑都没考虑直接一个方法传参这么多。看着这样的方法,谁都头皮发麻。所以就着手优化,想到用一个类去承接这么多参数,方法看着简单明了,而且全局变量之类的也变少了。好处是立竿见影!
2. 尽量用recyclerView代替ScrollView实现长滚动布局
图上所示布局,一些Android开发者可能直接用ScrollView或者NestedScrollView包裹去实现了,实际上我强烈不建议你使用这种方式实现。而是使用recyclerView的多种行视图去做。为什么呢?那么来看下阿里android开发手册中怎么说。新项目一开始就是srcollView嵌套,之后改为recyclerView多种行视图,除了减少内存的消耗外,Activity或者Fragment中代码量从原先的五六百行,直接精简到三百来行,效果明显;而且Activity中布局也只有recyclerView一个控件,清晰明了。
3. DialogFragment
你还在使用AlertDialog或者Dialog吗?强烈建议你使用DialogFragment。我使用它是因为看了阿里android开发手册,推荐这样。之后发现原来google也建议使用它。好处我就不多说了,网上大佬讲解的很详细,我就不老生常谈了。
4. 慎用单例,static关键字
为何给出这样的建议?我的同事是一个有这八年以上工作经验的人了,很喜欢使用单例,但使用后从来不考虑产生的内存泄漏问题!所以,给大家提个醒!
ps: 如果对你有所帮助,那是我的荣幸;如果对你没帮助,说明你的技术在我之上。那么,废话不多说了,在此我厚着脸皮推荐下自己的公众号,大佬们可别误会啊,我的公众号Android技术是次要的,看上面也知道我是个菜鸟,能分享啥牛逼的技术嘛!公众号我主要分享的是我对股市(投资)、楼市、生活的感悟等,希望会对你有所帮助。