android适配autolayout的使用心得体会

3、使用时候有两种用法:

一种是让你的Activity继承自AutoLayoutActivity.一般可以把你的基类继承AutoLayoutActivity

如果你觉得这种对你的activity改变太大等等,,,

那么,你可以将你的布局替换成

LinearLayout -> AutoLinearLayout

RelativeLayout -> AutoRelativeLayout

FrameLayout -> AutoFrameLayout

系统原有的属性都会保留。

ps:几个注意事项

1、可以多用margin,减少嵌套,因为不需要考虑适配问题,所以,可以直接margin固定距离尺寸等等,

LinearLayout的weight也不需要,直接每个布局设置相同宽度即可。

2、textview使用中发现很多问题,直接用px会出现高度不对问题。鸿洋这样解释:设计稿一般只会标识一个字体的大小

,比如你设置textSize=”20px”,实际上TextView所占据的高度肯定大于20px,字的上下都会有一定的间隙,所以一定要

灵活去写字体的高度,比如对于text上下的margin可以选择尽可能小一点。或者选择别的约束条件去定位(比如上例,选

择了marginBottom)

但是更简单的处理方式是,我们的字体尺寸可以继续用sp.

3、在listview ,recycleview 或者一些布局我们无法转换为autoXXX的布局,我们想为子布局做适配的时候,我们需要

用到同一个方法, AutoUtils.autoSize(convertView);我们可以实例化出来子布局,然后设置适配,那么这个子布局将

会适配auto布局。

对于ListView

对于ListView这类控件的item,默认根局部写“px”进行适配是无效的,因为外层非AutoXXXLayout,而是ListView。但

是,不用怕,一行代码就可以支持了:

@Override

public View getView(int position, View convertView, ViewGroup parent){

ViewHolder holder = null;

if (convertView == null){

holder = new ViewHolder();

convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false);

convertView.setTag(holder);

//对于listview,注意添加这一行,即可在item上使用高度

AutoUtils.autoSize(convertView);

} else{

holder = (ViewHolder) convertView.getTag();

}

return convertView;

}

注意AutoUtils.autoSize(convertView);这行代码的位置即可。demo中也有相关实例。

对于RecyclerView

public ViewHolder(View itemView){

super(itemView);

AutoUtils.autoSize(itemView);

}

//…

@Override

public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){

View convertView = LayoutInflater.from(mContext).inflate(R.layout.recyclerview_item, parent, false);

return new ViewHolder(convertView);

}

一定要记得LayoutInflater.from(mContext).inflate使用三个参数的方法!

当然大家现在也没谁用这种low炸了,直接写adapter了吧,太麻烦了,BaseQucickAdapter是一个高达14k的强大的adapter,

那我们该怎么适配呢,其实只需要一句话。

@Override

public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

AutoUtils.auto(parent);

return super.onCreateViewHolder(parent, viewType);

}

4、对于我们自定义的布局,我们可以用平常的适配,如果也想支持px直接写的话,可以在里面进行适配:

例如博文给出的:

AutoCardView.java

public class AutoCardView extends CardView {

private final AutoLayoutHelper mHelper = new AutoLayoutHelper(this);

public AutoCardView(Context context) {

super(context);

}

public AutoCardView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public AutoCardView(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

}

@Override

public LayoutParams generateLayoutParams(AttributeSet attrs) {

return new LayoutParams(getContext(), attrs);

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

{

if (!isInEditMode())

mHelper.adjustChildren();

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

}

@Override

protected void onLayout(boolean changed, int left, int top, int right, int bottom)

{

super.onLayout(changed, left, top, right, bottom);

}

public static class LayoutParams extends CardView.LayoutParams

implements AutoLayoutHelper.AutoLayoutParams

{

private AutoLayoutInfo mAutoLayoutInfo;

public LayoutParams(Context c, AttributeSet attrs)

{

super(c, attrs);

mAutoLayoutInfo = AutoLayoutHelper.getAutoLayoutInfo(c, attrs);

}

public LayoutParams(int width, int height)

{

super(width, height);

}

public LayoutParams(int width, int height, int gravity)

{

super(width, height, gravity);

}

public LayoutParams(ViewGroup.LayoutParams source)

{

super(source);

}

public LayoutParams(MarginLayoutParams source){

super(source);

}

public LayoutParams(FrameLayout.LayoutParams source) {

super((MarginLayoutParams) source);

gravity = source.gravity;

}

public LayoutParams(LayoutParams source){

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

总结

其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

Android大厂面试真题全套解析

2017-2020字节跳动Android面试真题解析PDF
然而Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img
,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

[外链图片转存中…(img-bKmA73Fi-1712835721895)]

[外链图片转存中…(img-zLiFLRzG-1712835721896)]
然而Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-tkS5xSfK-1712835721896)]

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值