Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

[Deprecated] A Simple & Convenience MultiScreen-Support-Library for Android

Notifications You must be signed in to change notification settings

gavinliu/Android-ScaleLayout

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Android-ScaleLayout

A Simple & Convenience MultiScreen-Support-Library for Android

The essence is percent scaling.

different from android-percent-support-lib

  1. More reliable
    android-percent-support-lib The percentage of the parent and child views.
    Android-ScaleLayout The percentage of the design and devices screens.

  2. More convenience
    android-percent-support-lib need to calculate percent.
    Android-ScaleLayout directly write the design size on layout.xml.

How to look?

screenhot

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, the fontscale: 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

About

[Deprecated] A Simple & Convenience MultiScreen-Support-Library for Android

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.