android的适配比较麻烦,通常简单的适配有
代码适配,虽然第一次写比较麻烦, 但是之后就会很省事情 而其他的,虽然不麻烦,但是改动起来会很头痛,各种数据
这里 鸿洋大神也有说明,也有对应的自动写value相关dimen的程序 (如果大家自己写,应该也可以实现,但是项目周期就会延长,自己造轮子还是复用别人的轮子) http://blog.csdn.net/lmj623565791/article/details/45460089
这里,介绍也是 鸿洋大神 的自动适配Module,导入Module或者直接配置gradle就可以使用 具体使用,可以见 对应github的ReadMe https://github.com/hongyangAndroid/AndroidAutoLayout
<meta-data android:name="design_width" android:value="768"></meta-data>
<meta-data android:name="design_height" android:value="1280"></meta-data>
我们可以猜测,程序中会去获得对应的值,去做其他尺寸的适配
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
public class UseDeviceSizeApplication extends Application
{
@Override
public void onCreate()
{
super.onCreate();
AutoLayoutConifg.getInstance().useDeviceSize();
}
}
Application,我们通常会在第三方init一些值 或者程序初始化或者crash等,统一做的操作 当然也可以写一些公用的常量和方法 (具体自己看Application的定义) 大体可以明白,这里用于一些初始化操作
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);
}
}