使用autoLayout用px写布局完成适配安卓下的适配

首先,项目初期 需要根据设计师的效果图来搭建布局, 设计师给的尺寸是1334x752的,然后设计图上全部标注的是像素,  如何弄一个万能适配的布局,且根据px来写,这成为了一个问题;

看了需求,在网上借鉴了鸿洋大神,是一个比较好的方案:

第一步: 添加依赖

dependencies {
    compile 'com.zhy:autolayout:1.4.5'
}
第二步:

在你的项目的AndroidManifest中注明你的设计稿的尺寸。 在application中

 
        
第三步:

让你的Activity继承自AutoLayoutActivity.如果不想继承AutoLayoutActivity,则在编写布局的时候雨,将

LinearLayout -> AutoLinearLayout
RelativeLayout -> AutoRelativeLayout
FrameLayout -> AutoFrameLayout

注意一一对应关系

目前支持的属性:

layout_width
layout_height
layout_margin(left,top,right,bottom)
pading(left,top,right,bottom)
textSize
maxWidth, minWidth, maxHeight, minHeight

注意事项:

对于ListView,RecyclerView的Item适配,局部写px是无效的,因为外层非AutoXXXLayout,加上一行代码

@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;
}
对于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使用三个参数的方法!


后记:在实际的开发,对于适配问题,排列布局,最建议的还是使用权重来进行适配,不同分辨率的手机当适配一样的时候,体验会很好

最后贴上鸿洋大神的gitHub源码地址:

https://github.com/hongyangAndroid/AndroidAutoLayout



你可能感兴趣的:(使用autoLayout用px写布局完成适配安卓下的适配)