AndroidAutoSize README

The project's README from github.com/JessYanCoding/AndroidAutoSize. As one markdown file: README.md.

Logo Official

Latest Stable Version Build Status Min Sdk Version License Author QQ Group

中文说明

A low-cost Android screen adaptation solution (今日头条屏幕适配方案终极版,一个极低成本的 Android 屏幕适配方案).

Overview

Pixel 2 XL | 1440 x 2880 | 560dpi:

Pixel XL | 1440 x 2560 | 560dpi:

Nexus 5X | 1080 x 1920 | 420dpi:

Nexus 4 | 768 x 1280 | 320dpi:

Nexus S | 480 x 800 | 240dpi:

Notice

Download

Jcenter ( ⚠️ DEPRECATION WARNING: the JCenter repository will keep serving packages until February 1st, 2022):

 implementation 'me.jessyan:autosize:1.2.1'

JitPack:

Step 1. Add the JitPack repository in your root build.gradle at the end of repositories:

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

Step 2. Add the dependency

dependencies {
    implementation 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1'
}

Usage

Step 1 (just one steps)

<manifest>
    <application>            
        <meta-data
            android:name="design_width_in_dp"
            android:value="360"/>
        <meta-data
            android:name="design_height_in_dp"
            android:value="640"/>           
     </application>           
</manifest>

Preview

DP

PT

IN

MM

Advance (see demo)

Activity

public class CustomAdaptActivity extends AppCompatActivity implements CustomAdapt {

    @Override
    public boolean isBaseOnWidth() {
        return false;
    }

    @Override
    public float getSizeInDp() {
        return 667;
    }
}
public class CancelAdaptActivity extends AppCompatActivity implements CancelAdapt {

}

Fragment

AutoSizeConfig.getInstance().setCustomFragment(true);
public class CustomAdaptFragment extends Fragment implements CustomAdapt {

    @Override
    public boolean isBaseOnWidth() {
        return false;
    }

    @Override
    public float getSizeInDp() {
        return 667;
    }
}
public class CancelAdaptFragment extends Fragment implements CancelAdapt {

}

Subunits (see demo-subunits)

AutoSizeConfig.getInstance().getUnitsManager()
        .setSupportDP(false)
        .setSupportSP(false)
        .setSupportSubunits(Subunits.MM);

About Me

License

 Copyright 2018, jessyan

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

AndroidAutoSize (JessYanCoding/AndroidAutoSize)

Searching Database…

这是什么?AndroidAutoSize 是一个开源的 Android 屏幕适配库,是头条基于 density 的适配方案的“终极版”,让同一套布局在屏幕尺寸和像素密度差异很大的各种设备上都能正确缩放显示。
它是加到我的应用里的库,还是一个单独运行的工具?是一个库,不是单独的工具:你把它作为 Gradle 依赖加到 Android 应用里,它会在运行时对界面进行缩放。
怎么把它加到我的 Android 项目里?在根 build.gradle 中添加 JitPack 仓库,添加依赖,然后在 AndroidManifest 里初始化——README 把这一步初始化称为唯一必需的步骤('just one steps')。旧的 JCenter 仓库已经弃用。
完全按 density 缩放是不是绝对安全,还是有什么坑?它的原理是改写 DisplayMetrics#density,README 提到这可能带来不良影响;可选的 pt/in/mm 子单位可以避开这个问题,让你直接按设计稿的像素尺寸写数值,不用换算成 dp。
它只支持 Android,还是也支持其他平台?只支持 Android——它是一个围绕 Android 的 DisplayMetrics 构建的 Java 库;README 的演示覆盖了 240 dpi 到 560 dpi 的 Android 手机,没有提到 iOS 或网页支持。
接入的工作量大不大?刻意做得很小——这正是它宣传的“低成本”:只需一个 Gradle 依赖加上 AndroidManifest 里的一次初始化。针对单个 Activity 或 Fragment 的微调以及子单位支持都是可选的。
它支持哪些布局单位?dp 和 sp 开箱即用。pt、in 和 mm 这些子单位需要先通过 AutoSizeConfig.getInstance().getUnitsManager().setSupportSubunits(...) 启用。
能不能让某些页面不参与缩放?可以。任何一个 Activity 都可以使用自定义的适配参数,或者完全取消适配;先开启 Fragment 支持,Fragment 也可以用同样的方式调整或取消适配。
在 Android Studio 里怎么精确预览设计稿?按 README 里的公式创建一个自定义虚拟设备——对 dp 来说,屏幕尺寸 = sqrt(竖直^2 + 水平^2)/dpi——并且可以选用隐藏状态栏和导航栏的 panel 主题,让预览铺满整个页面。
Size
3.1 MB
Stars
13.7K
Age
8y
Commits · 90 Days