第一种 AutoLayout方法
第一步:导依赖
dependencies { //autoLayout依赖 compile 'com.zhy:autolayout:1.4.3' }
manifests---application标签内
<!--注明设计稿的尺寸--> <meta-data android:name="design_width" android:value="768"> </meta-data> <meta-data android:name="design_height" android:value="1280"> </meta-data>
然后在你的PreView面板,选择分辨率一致的设备
第二部创建 App类
public class App extends Application { @Override public void onCreate() { super.onCreate(); //设备的物理高度进行百分比化: AutoLayoutConifg.getInstance().useDeviceSize(); } }
第三部
public class MainActivity extends AutoLayoutActivity
第四部
XML布局文件内 随心所以的用PX设置大小啦
<TextView android:text="欢迎" android:gravity="center" android:layout_width="200px" android:layout_height="300px" /> <ImageView android:src="@mipmap/ic_launcher" android:layout_width="300px" android:layout_height="300px" />
当然你也可以不去继承AutoLayoutActivity
来使用。
AutoLayoutActivity
的用法实际上是完成了一件事:
- LinearLayout -> AutoLinearLayout
- RelativeLayout -> AutoRelativeLayout
- FrameLayout -> AutoFrameLayout
如果你不想继承AutoLayoutActivity
,那么你就得像Google的百分比库一样,去用AutoXXXLayout代替系统原有的XXXLayout。当然,你可以放心的是,所有的系统属性原有的属性都会支持,不过根布局上就不支持px的自动百分比化了,但是一般根布局都是MATCH_PARENT,而上述的方式,根布局也是可以直接px的百分比化的。
注意事项
- 对于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
使用三个参数的方法
----------------------------------------------------------------------------------------------------------
第二种方法 百分比适配方法
首先 下载大神自动生成工具(内置了常用的分辨率)
https://github.com/hongyangAndroid/Android_Blog_Demos/tree/master/blogcodes/src/main/java/com/zhy/blogcodes/genvalues
下载:jar包
解压res
步骤1:以某一分辨率为基准,生成所有分辨率对应像素数列表
步骤2:把生成的各像素数列表放到对应的资源文件
步骤3:根据UI设计师给出某一分辨率设计图上的尺寸,找到对应像素数的单位,然后设置给控件即可
<ImageView android:src="@mipmap/ic_launcher" android:layout_width="@dimen/x320" android:layout_height="@dimen/y400" />
OK完成 是不是很简单 吃鸡