Android-ScaleLayout
A Simple & Convenience MultiScreen-Support-Library for Android
The essence is percent scaling.
android-percent-support-lib
different from -
More reliable
android-percent-support-lib
The percentage of the parent and child views.
Android-ScaleLayout
The percentage of the design and devices screens. -
More convenience
android-percent-support-lib
need to calculate percent.
Android-ScaleLayout
directly write the design size onlayout.xml
.
How to look?
Principle
float realPixel = percent * designPixel
Pix Mode
float realPixel = percent * designPixel float percent = mScreenWidth / designScreenWidth float designPixel = res.getDimensionPixelSize()
float realPixel = mScreenWidth * res.getDimensionPixelSize() / designScreenWidth
DP Mode
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)
Usage
0. dependencies
dependencies {
compile 'cn.gavinliu.android.lib:ScaleLayout:1.0.4'
}
1. Initialize
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);
}
}
TypedValue.COMPLEX_UNIT_SP
is Android FontSize unit, thefontscale
: float fontScale = ctx.getResources().getDisplayMetrics().scaledDensity;
2. Scale***Layout
Only need to replace FrameLayout
LinearLayout
RelativeLayout
to ScaleFrameLayout
ScaleLinearLayout
ScaleRelativeLayout
.
3. Scale by width or height
Width is default, you can also changed using attr.
<attr name="layout_scale_by" format="enum">
<enum name="width" value="0"/>
<enum name="height" value="1"/> </attr>
app:layout_scale_by="width"
Support Attrs
<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"/>
License
MIT