Грубость
Один из вариантов грубого быстрого полноэкранного адаптивного решения.
Проект включает:
Основа: использование vp в качестве единицы длины, переопределение относительных единиц, связанных с размером экрана.
Рисование: при написании XML используйте размеры из дизайн-документа, заменив единицы измерения на vp. Например, если ширина дизайна составляет 200, а длина элемента управления на дизайне равна 3, то при инициализации установите ширину равной 200 и длину элемента управления равной 3vp. Тогда на любом экране длина этого элемента будет составлять 3/200 от ширины экрана.
Предварительный просмотр: важно правильно отображать страницу во время предварительного просмотра. Возьмём для примера дизайн с разрешением 1080 * 2340. Чтобы обеспечить такой же предварительный просмотр, как и при обычном рисовании, создайте устройство с размерами 2340 по длине и 1080 по ширине и используйте его для предварительного просмотра.
Создайте har-пакет с помощью library и добавьте его в папку libs проекта, который вы хотите интегрировать. В файле gradle entry добавьте следующий код:
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
Добавьте следующие строки кода во все проекты:
allprojects{
repositories{
mavenCentral()
}
}
implementation "com.gitee.archermind-ti:rudeness:1.0.0"
Шаг 1:
public class DensityHelper {
/** * Получение ширины экрана * @return ширина экрана */
public static int getDisplayWidthInPx( Context context) {
Display display = DisplayManager.getInstance().getDefaultDisplay(context).get();
return display.getAttributes().width;
}
/**
* Получение высоты экрана без учёта высоты строки состояния
* @return высота экрана без учёта высоты строки состояния
*/
public static int getDisplayHeightInPx( Context context) {
Display display = DisplayManager.getInstance().getDefaultDisplay(context).get();
return display.getAttributes().height;
}
/**
* Преобразование vp в пиксели
*
* @param vp
* @return
*/
public static float vp2px( float vp, Context context) {
DisplayAttributes attributes = DisplayManager.getInstance().getDefaultDisplay(context).get().getAttributes();
return (attributes.densityPixels * vp);
}
}
2. **Шаг 2:**
public class RudeAbilitySlice extends AbilitySlice {
protected void onStart(Intent intent) {
initBottom();
}
public void initBottom() {
//Получение ID контейнера страницы
DirectionalLayout tab = (DirectionalLayout) findComponentById(ResourceTable.Id_rude_tab);
//Получение Text ID
Text buttonLogin = (Text) tab.findComponentById(ResourceTable.Id_log_in);
//Установка размера текста
buttonLogin.setTextSize((int) DensityHelper.vp2px(SEVENTEEN, getContext()));
}
}
-----
О демоверсии:
* **Нормальная страница** написана с использованием vp.
* **Грубая адаптированная страница** создана с использованием данного решения.
При запуске проекта на реальном устройстве или эмуляторе можно увидеть, что **грубая адаптированная страница** выглядит практически одинаково, в то время как **нормальная страница** имеет значительные различия между большими и маленькими экранами.
**Нормальная страница**:
![overview](screenshot/1.png)
**Грубая адаптированная страница**:
![overview](screenshot/2.png)
## Лицензия
Copyright [2019]
Licensed under the Apache License, Version 2.0;
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
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.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )