简单描述
android的适配比较麻烦,通常简单的适配有
- 图片适配
不同像素密度屏幕,加载不同路径,相同名称的图片 - dimens适配
不同像素密度屏幕,加载不同的宽高配置 - layout布局配置
不同像素密度屏幕,加载不同的界面 - java代码配置(很少整体使用,一般是局部的一个组件)
通过java代码来获取当前手机的宽高像素,按比例分配对应宽高
代码适配,虽然第一次写比较麻烦, 但是之后就会很省事情
而其他的,虽然不麻烦,但是改动起来会很头痛,各种数据
引用说明
这里 鸿洋大神也有说明,也有对应的自动写value相关dimen的程序
(如果大家自己写,应该也可以实现,但是项目周期就会延长,自己造轮子还是复用别人的轮子)
http://blog.csdn.net/lmj623565791/article/details/45460089
这里,介绍也是 鸿洋大神 的自动适配Module,导入Module或者直接配置gradle就可以使用
具体使用,可以见 对应github的ReadMe
https://github.com/hongyangAndroid/AndroidAutoLayout
使用描述
- 第一步,配置 AndroidManifest 中注明你的设计稿的尺寸
<meta-data android:name="design_width" android:value="768"></meta-data>
<meta-data android:name="design_height" android:value="1280"></meta-data>
我们可以猜测,程序中会去获得对应的值,去做其他尺寸的适配
- 第二步,让你的 Activity 继承自 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
- 第三步,继承Application,
public class UseDeviceSizeApplication extends Application
{
@Override
public void onCreate()
{
super.onCreate();
AutoLayoutConifg.getInstance().useDeviceSize();
}
}
Application,我们通常会在第三方init一些值
或者程序初始化或者crash等,统一做的操作
当然也可以写一些公用的常量和方法
(具体自己看Application的定义)
大体可以明白,这里用于一些初始化操作
- 扩展,其他继承系统的FrameLayout、LinearLayout、RelativeLayout的控件,比如CardView
自己可以写对应的代码
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 AutoFrameLayout.LayoutParams generateLayoutParams(AttributeSet attrs)
{
return new AutoFrameLayout.LayoutParams(getContext(), attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
if (!isInEditMode())
{
mHelper.adjustChildren();
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
- 其他相关内容,见ReadMe文件
再次贴一下 鸿洋大神的 github 项目地址:
https://github.com/hongyangAndroid/AndroidAutoLayout
下一篇我们可以了解鸿洋AutoLayout代码分析(二):获取Manifest中的值
网友评论