Я новичок в Android и Android Studio.
Я работаю над проектом, который должен быть оптимизирован для всех экранов.
Мое приложение работает в портретном режиме, поэтому я заблокировал альбомную ориентацию как перед запуском, так и в рабочем состоянии.
Теперь я в тупике. Я хочу знать, какой элемент важен в дизайне?
В статье я прочитал, что у меня должно быть 4 макета (маленький, нормальный, большой и большой) для моей деятельности, но когда я запускаю свое приложение в эмуляторе студии Android с размером экрана 5,0 дюйма, оно успешно работает, но когда я запускаю его на реальное устройство с 5,0-дюймовым экраном, мой макет не отображается полностью на экране.
В другой статье я прочитал, что для адаптивного дизайна я должен использовать все плотности (ldpi, mdpi, hdpi и т. д.).
теперь я запутался, как предотвратить жесткое кодирование местоположения и размера элементов в дизайне Android.
пожалуйста, помогите мне, мне так необходимо изучить этот вопрос
Здравствуйте, я рекомендую вам прочитать этот developer.android.com/training/multiscreen/screensizes лучший способ создать свои папки для каждой плотности и размера экрана, чтобы избежать избыточных методов 64k (developer.android.com/studio/build/multidex.html?hl=ES#avoid) в вашем проекте и избежать наличия большего количества библиотек, чем вам действительно нужно.
Вы можете использовать эту библиотеку https://github.com/intuit/sdp для создания адаптивного макета, оптимизированного для всех экранов.
На самом деле он представляет новую единицу масштабирования, называемую sdp (масштабируемая dp).
Вот пример того, как его использовать после добавления зависимости в файл build.gradle.
<LinearLayout
android:id = "@+id/give_us_a_review_landmine_main_layout"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:gravity = "center"
android:orientation = "vertical"
android:paddingBottom = "@dimen/_27sdp"
android:paddingLeft = "@dimen/_43sdp"
android:paddingRight = "@dimen/_43sdp"
android:paddingTop = "@dimen/_50sdp" >
<TextView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "Intuit"
android:textColor = "@android:color/black"
android:textSize = "@dimen/_40sdp"/>
</LinearLayout>
В этом примере, как вы можете видеть, я использую sdp вместо dp.
Вы можете попробовать, и вы увидите, что даже textSize будет изменять размер в зависимости от вашего экрана и сохранять то же соотношение textSize/разрешение.
Я добавил пример и объяснил его.
В 99% случаев вам нужен только 1 макет для экрана, возможно, с несколькими значениями в разных значениях в зависимости от размера экрана. Но все зависит от того, чем вы занимаетесь. Этот вопрос слишком широк, чтобы на него можно было эффективно ответить.