美文网首页我爱编程
多适配之Android autolayout

多适配之Android autolayout

作者: 文强小弟 | 来源:发表于2018-06-21 18:11 被阅读0次

    dip(dp):Density independent pixels,设备无关像素。是用来做适配的。
    px:像素
    分辨率 : 横纵2个方向的像素点的数量,常见取值480X800,320X480,2160*1080

    一、注册设计图尺寸

    1.app/build.gradle的dependencies 中添加
    dependencies {
    compile 'com.zhy:autolayout:1.4.3'
    }
    2.AndroidManifest中注明你的设计稿的尺寸。
    <meta-data android:name="design_width" android:value="768"></meta-data>
    <meta-data android:name="design_height" android:value="1280"></meta-data>

    二、Activity中开启设配(px)

    有两种方式:
    1.Activity继承AutoLayoutActivity
    AutoLayoutActivity的用法实际上是完成了一件事:
    •LinearLayout -> AutoLinearLayout
    •RelativeLayout -> AutoRelativeLayout
    •FrameLayout -> AutoFrameLayout
    2.用AutoXXXLayout代替系统原有的XXXLayout。根布局上就不支持px的自动百分比化了,但是一般根布局都是MATCH_PARENT。

    三、注意事项

    1.textview
    <TextView
    textSize="32px"
    layout_height="wrap_contnt"
    />
    运行肯定不是32px的高度,文字的上下方都会有一定的空隙。如何你将高度写死,也会发现文字显示不全。所以对于居中,虽然可以使用本库通过编写margin_left,margin_top等很轻松的完成居中。但是为了精确起见,还是建议使用gravity,centerInXXX等属性完成。
    2.将状态栏区域作为内容区域
    如果某个Activity需要将状态栏区域作为实际的内容区域时,那么可用高度会变大,你所要做的只有一件事:让这个Activity实现UseStatusBar接口(仅仅作为标识左右,不需要实现任何方法),当然你肯定要自己开启windowTranslucentStatus或者设置FLAG_TRANSLUCENT_STATUS。
    注意:仅仅是改变状态栏颜色,并不需要实现此接口,因为并没有实际上增加可用高度。
    3.目前支持的属性:
    layout_width
    layout_height
    layout_margin(left,top,right,bottom)
    pading(left,top,right,bottom)
    textSize
    maxWidth, minWidth, maxHeight, minHeight
    4.对于ListView,RecyclerView的Item适配
    @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使用三个参数的方法!

    相关文章

      网友评论

        本文标题:多适配之Android autolayout

        本文链接:https://www.haomeiwen.com/subject/yibqyftx.html