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, «ultimate-версия» схемы на основе density от Toutiao. Она позволяет одному макету корректно масштабироваться на устройствах с очень разными размерами и плотностью экрана.
Это библиотека, которую я добавляю в своё приложение, или отдельная программа?Это библиотека, а не отдельная программа: вы подключаете её как Gradle-зависимость к своему Android-приложению, и она масштабирует интерфейс во время работы.
Как добавить её в свой Android-проект?Добавьте репозиторий JitPack в корневой build.gradle, подключите зависимость, а затем выполните инициализацию в AndroidManifest — в README сказано, что эта одна инициализация и есть единственный обязательный шаг. Старый репозиторий JCenter устарел.
Масштабирование всего по density действительно безопасно, или есть подвох?Библиотека работает, перезаписывая DisplayMetrics#density, а в README говорится, что это может давать побочные эффекты. Необязательные подединицы pt/in/mm позволяют этого избежать и писать размеры из макета в дизайн-пикселях, не переводя их в dp.
Это только для Android или другие платформы тоже поддерживаются?Только Android — это Java-библиотека, построенная вокруг DisplayMetrics в Android. В README она демонстрируется на Android-смартфонах от 240 до 560 dpi; о поддержке 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 — и при желании выберите тему панели, которая скрывает строку состояния и панель навигации, чтобы предпросмотр занимал всю страницу.
Size
3.1 MB
Stars
13.7K
Age
8y
Commits · 90 Days