一个简单的,方便的多屏适配的Android库
-
更科学
android-percent-support-lib
是父控件和子控件的百分比关系
Android-ScaleLayout
是设计界面和设备界面的百分比关系 -
更方便
android-percent-support-lib
需要把设计尺寸算成百分比
Android-ScaleLayout
直接把设计尺寸填入layou.xml
即可
float realPixel = percent * designPixel
float realPixel = percent * designPixel
float percent = mScreenWidth / designScreenWidth
float designPixel = res.getDimensionPixelSize()
float realPixel = mScreenWidth * res.getDimensionPixelSize() / designScreenWidth
float realPixel = percent * designPixel
float percent = mScreenWidth / designScreenWidth
float designPixel = designDP * designDensity // dp to pixel
float designDP = res.getDimensionPixelSize() / mDensity
float realPixel = (mScreenWidth * designDensity * getPixelSize()) / (designScreenWidth * mDensity)
dependencies {
compile 'cn.gavinliu.android.lib:ScaleLayout:1.0.4'
}
public class MyApplication extends Application {
@Override
public void onCreate() {
ScaleConfig.create(this,
1080, // Design Width
1920, // Design Height
3, // Design Density
3, // Design FontScale
ScaleConfig.DIMENS_UNIT_DP);
}
}
Android 文字大小的单位是
sp
,字体的缩放方式需要 FontScale: float fontScale = ctx.getResources().getDisplayMetrics().scaledDensity;
只需要把 FrameLayout
LinearLayout
RelativeLayout
替换成 ScaleFrameLayout
ScaleLinearLayout
ScaleRelativeLayout
.
默认是 width,当然你可以用属性修改。
<attr name="layout_scale_by" format="enum">
<enum name="width" value="0"/>
<enum name="height" value="1"/>
</attr>
app:layout_scale_by="width"
<attr name="android:layout_width"/>
<attr name="android:layout_height"/>
<attr name="android:layout_margin"/>
<attr name="android:layout_marginLeft"/>
<attr name="android:layout_marginTop"/>
<attr name="android:layout_marginRight"/>
<attr name="android:layout_marginBottom"/>
<attr name="android:layout_marginStart"/>
<attr name="android:layout_marginEnd"/>
<attr name="android:padding"/>
<attr name="android:paddingLeft"/>
<attr name="android:paddingTop"/>
<attr name="android:paddingRight"/>
<attr name="android:paddingBottom"/>
<attr name="android:paddingStart"/>
<attr name="android:paddingEnd"/>
<!-- TextView -->
<attr name="android:textSize"/>
MIT