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使用三个参数的方法!
网友评论