Ako se pitate kako promijeniti omjer stranica u aplikacijama za sklopive uređaje, došli ste na pravo mjesto. Sklopivi mobilni telefoni i tableti dramatično su povećali raznolikost veličina i orijentacija.A to direktno utiče na izgled vaših aplikacija. Između novih pravila za Android 16, sistemskih podešavanja i najboljih praksi dizajna, postoji mnogo toga što treba uzeti u obzir kako bi sve savršeno odgovaralo kompaktnim, srednjim i proširenim ekranima.
Slika je jasna: Android insistira na tome da sve aplikacije budu promjenjive veličine i da poštuju iskustvo velikog ekrana. (tableti, desktop mod i interni ekrani na preklapanje). Uprkos tome, postoje načini za podešavanje omjera stranica za svaku aplikaciju, testiranje u emulatorima, omogućavanje ponašanja kompatibilnosti i, ako je potrebno, kreiranje izuzetaka. Idemo korak po korak, bez previše detalja.
Šta se promijenilo u Androidu 16 (API 36): orijentacija, izgled i veličina
Sa Androidom 16 (API nivo 36), sistem može ignorisati ograničenja aplikacija u pogledu orijentacije, omjera stranica i promjene veličine na velikim ekranima. Ovo se odnosi na uređaje sa najmanjom širinom (sw) ≥ 600dptablete, the unutrašnji ekran mnogih telefona na preklop i način rada prozora radne površine. Cilj je pružiti konzistentno iskustvo na velikim ekranima, poštujući korisničke preferencije u pogledu orijentacije i veličine kada ima dovoljno prostora.
U aplikacijama koje ciljaju API 36, Aktivnosti se po zadanim postavkama mogu mijenjati po veličini i može ući u režim rada s više prozora ako uređaj ima sw ≥ 600dp (što je ekvivalentno resizeableActivity="true"). U praksi, sistem ignoriše nekoliko atributa koji su se ranije forsirali na fiksno ponašanje na velikim ekranima.
Atributi se ignorišu na velikim ekranima prilikom ciljanja API-ja 36
Ako je vaša aplikacija namijenjena za Android 16, nekoliko zastavica manifesta i srodni API-ji se ignoriraju u prikazima sw ≥ 600dp. Među atributima koji prestaju biti efikasni su screenOrientation (portretna, pejzažna i senzorska/korisnička varijanta), resizeableActivity, minAspectRatio, maxAspectRatio i pozivi poput setRequestedOrientation()/getRequestedOrientation() sa istim fiksnim vrijednostima.
Ova promjena sprječava da aplikacija bude "zaključana" u portretnom ili uskom omjeru širine i visine kada ima mnogo više prostora za prikaz sadržaja. Ideja je favorizirati adaptivne rasporede i izbjegavati neželjeno rastezanje ili izrezivanje. što frustrira korisnike velikih ekrana.
Izuzeci: kada se ove promjene ne primjenjuju

Iako je novi model strožiji na velikim ekranima, postoje izuzeci. Ova podešavanja se ne primjenjuju na ekrane sa sw < 600dp (Mnogi telefoni, neki sklopivi u vanjskom načinu rada) i igre (kategorija android:appCategory="game") su isključeni. Nadalje, ako korisnik omogući zadano ponašanje aplikacije u opcijama omjera stranica, ta postavka ima prednost.
Ako objavljujete igre, Google Play vam može pomoći u upravljanju kategorijom aplikacija Kada koristite Android App Bundles i Play App Signing, dobijate dodatne pogodnosti distribucije. Za aplikacije koje nisu namijenjene igrama, važno je napraviti responzivni korisnički interfejs i dozvoliti sistemu da upravlja prikazivanjem prozora.
Kako onemogućiti ponašanje u API 36 i obavijest za API 37
Ako, iz opravdanog razloga, morate odabrati da ne primijenite ovo ponašanje u API 36, Možete deklarirati svojstvo manifesta "android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY". Postavite ga u određenoj aktivnosti ili u cijeloj aplikaciji:
<activity ...>
<property
android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
android:value="true" />
</activity>
<application ...>
<property
android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
android:value="true" />
</application>
Pazite na ovo: Okvir će ukloniti opciju "odjave" u API-ju 37.Drugim riječima, za aplikacije koje ciljaju na 37 ili više, ograničenja orijentacije, omjera širine i visine i promjene veličine uvijek će biti ignorirana na ekranima sa sw ≥ 600dp.
Testiranje na emulatorima i uređajima: kako reproducirati slučajeve iz stvarnog svijeta
Da biste saznali da li su promjene uticale na vašu aplikaciju, Koristite emulatore Pixel Tableta i Pixel Folda u Android StudijuDefinirajte targetSdkPreview = "Baklava" u build.gradle datoteci vašeg modula i promatrajte kako vaš korisnički interfejs reagira na promjene u orijentaciji, savijanju/rasklapanju i veličini prozora.
Također možete omogućiti univerzalno ponašanje promjenjive veličine sa oznakom kompatibilnosti UNIVERSAL_RESIZABLE_BY_DEFAULT na vašim testnim uređajima. A za automatizirano testiranje, Espresso i Jetpack Compose-ovi testni API-ji vam omogućavaju da validirate cijele tokove s promjenom veličine, rotacijom i višestrukim prozorima.
Uobičajeni problemi s velikim ekranima i kako ih izbjeći
Aplikacije koje su bile vezane za fiksnu orijentaciju, određeni omjer širine i visine ili aktivnosti koje se ne mogu mijenjati u veličini obično pate u Androidu 16: rastegnuti elementi, preklapanja, dugmad izvan prikaza i greške kamere u pregledima. Rješenje leži u prihvatanju responzivnog dizajna.
- Izbjegavajte rastegnute komponente: Dodajte maksimalne širine kako kartica, alatna traka ili slika ne bi izgubile kontrolu horizontalno.
- Omogućite skrolovanje gdje je to prikladno: ako nema pomjeranja, korisnik može izgubiti vitalne kontrole prilikom prelaska u pejzažni način rada.
- Pažljivo rukujte kamerom u oba položaja: Podesite tražilo i rotaciju u odnosu na senzor; nemojte pretpostavljati fiksni omjer širine i visine.
- Čuva stanje prilikom promjene veličine: Aktivnost se može ponovo kreirati; ona čuva unose u obrazac i korisnički kontekst.
- Koristite klase veličine prozora: razmišljajte u smislu kategorija veličine i u Responzivni rasporedi koji se prilagođavaju prostoru.
Glas korisnika: "Moje aplikacije izgledaju čudno na Foldu"
Ako koristite uređaj za savijanje, kao što je Galaxy Fold A ako primijetite slike na Instagramu ili Redditu koje su previše pretjerane ili rastegnute, niste sami. To je simptom aplikacija koje nisu optimizirane za velike ekrane ili sa prisilnim skaliranjem. Štaviše, u igrama postoje naslovi koji i dalje ne koriste dobro prostor i izgledaju loše.
Postoje li postavke? Kod mnogih proizvođača možete prisilno prikazivati cijeli ekran za svaku aplikaciju. Međutim, ako aplikacija nije prilagođena, rezultat može biti neoptimalan.Idealno bi bilo da programer usvoji adaptivne rasporede; kao korisnik, provjerite Postavke > Prikaz > Aplikacije preko cijelog ekrana (ili Skaliranje aplikacije) da biste upravljali svakom aplikacijom.
Korisne sistemske postavke: omjer širine i visine po aplikaciji i gustoća
U Android skinovima različitih proizvođača pronaći ćete opcije koje omogućavaju pokretanje određenih aplikacija preko cijelog ekrana ili u određenom omjeru širine i visine. Uobičajene putanje: Postavke > Prikaz > Skaliranje aplikacija / Aplikacije preko cijelog ekranaAktivirajte ga putem aplikacije i provjerite rezultat.
Ako sadržaj i dalje ne odgovara, Možete se igrati s gustoćom (najmanjom širinom) iz opcija za programereOmogućite programerski način rada tako što ćete sedam puta dodirnuti broj verzije (Postavke > Sistem > O telefonu), idite na Opcije za programere i podesite "Najmanja širina": smanjenje vrijednosti čini sve većim; povećanje čini ga manjim. Učinite ovo korak po korak i zabilježite originalnu vrijednost.
Za zakrivljene ekrane, neki sistemi uključuju "Zanemarite nasumične dodire na rubovima" ili "Zaštita od slučajnog dodira". Pogođeno područje može se prilagoditi na određenim slojevima (na primjer, na nekim Xiaomi modelima). Ne popravlja omjer slike, ali smanjuje fantomske dodire tokom testiranja postavki.
Sastavljanje i responzivni dizajn: klase veličina prozora
Jetpack Compose pruža savršene alate za korisničke interfejse koji se rastežu bez lomljenja. Klase veličine prozora (Materijal 3) pojednostavljuju logiku Odvajanje rasporeda od fizičkih dimenzija ekrana. Klasificira po širini/visini na kompaktno, srednje i prošireno i prilagođava korisnički interfejs u skladu s tim.
U korijenskom komponovatelnom objektu možete dobiti klasu veličine i propagirati je kao stanje. Izbjegavajte dizajnerske odluke zasnovane na načelu "je li to tablet?" ili fiksnom omjeru stranicaAplikacija može raditi u režimu više prozora, u segmentu ekrana ili na eksternom monitoru.
Za interne komponente koristite njihovu stvarnu širinu renderiranja. BoxWithConstraints vam omogućava da promijenite ŠTA se prikazuje na osnovu dostupnog prostora. (na primjer, prelazak sa rasporeda u koloni na raspored u redu s detaljima), pretpostavljajući troškove odgođenog sastavljanja u fazi rasporeda.
Sav sadržaj dostupan, cijelo vrijeme
Ako komponenta prikazuje više detalja kada ima dovoljnu širinu, Ne učitavaj podatke "na osnovu" veličineUvijek ih proslijedite (na primjer, imageUrl, title, description) i odlučite u composableu koji su dijelovi vidljivi. Ovo izbjegava nuspojave prilikom promjene veličine i čuva stanje.
Kada se raspored promijeni (sa jedne na dvije kolone ili obrnuto), preporučljivo je podići statusne zastavice poput showMore na najviši nivo. Ovo čuva namjeru korisnika čak i ako se raspored promijeniU Compose-u, imajte na umu da rememberSaveable pomaže u održavanju stanja putem rekreiranja aktivnosti.
Manifest i ograničenja koja blokiraju promjenu veličine
Ako vaša aplikacija ne mijenja veličinu ili je zaglavljena u određenom omjeru širine i visine, provjerite AndroidManifest.xml. Uklonite android:maxAspectRatio, android:resizeableActivity=»false» i fiksirajte orijentaciju ekrana Ako optimizirate za velike ekrane ili slobodni format, API 36 će biti od male koristi za softver veličine ≥ 600dp jer će ih sistem ignorisati.
Za starije aplikacije, ovaj korak je ključan: dozvolite prozoru da raste i smanjuje se To je prvi glavni filter koji osigurava da vaš korisnički interfejs dobro reaguje u režimu radne površine, režimu podijeljenog ekrana ili prilikom rasklapanja ekrana koji se može sklopiti.
Promjene konfiguracije i životni ciklus
Prilikom promjene veličine prozora, Konfiguracija je ažurirana. (širina/visina, orijentacija, omjer širine i visine). U klasičnim prikazima ovo možete vidjeti pomoću onConfigurationChanged; u Composeu, LocalConfiguration.current automatski odražava ove promjene.
Također ćete primijetiti implikacije životnog ciklusa. Od verzije API 24, samo značajne promjene veličine ponovo kreiraju aktivnost.Međutim, to se može dogoditi. Zabilježite događaje pomoću LifecycleEventObserver-a i provjerite kada je aktivnost uništena/kreirana. Ako povežete eksterni monitor ili se gustoća promijeni, može se i ponovo kreirati.
Kontinuitet stanja i pozadinskog rada
Da bi se sačuvalo stanje korisničkog interfejsa od reproduktivnih kreiranja, Koristite rememberSaveable umjesto remember kada stanje treba da preživi promjene konfiguracije. I podiže stanje na ViewModel za pravi kontinuitet između reprodukcija, izbjegavajući skupo dupliranje resursa.
Ako se inicijalizacija pokrene u onCreate(), može se ponoviti. Premjestite inicijalizaciju u init ViewModel-a tako da se pokreće samo jednom po životnom ciklusu ViewModel-a. Ovo je posebno važno ako postoje mrežni pozivi ili veliki broj ulazno/izlaznih operacija.
Web dizajn za knjige na preklop: CSS, API-ji i performanse
Za web stranice, stvari funkcionišu paralelno. Sklopivi uređaji zahtijevaju preciznije medijske upiteNe samo klasične tačke prekida. Kombinujte min/maks-širinu sa odnosom stranica za scenarije poput 3:4 (preklopljeni portret) ili 16:9 (pejzaž). Reorganizujte menije, mreže i slike u skladu sa stvarno dostupnim prostorom.
@media (min-width: 600px) and (max-width: 900px) {
/* Pantallas intermedias: plegable semiabierto */
}
@media (aspect-ratio: 3/4) {
/* Vertical plegado */
}
@media (aspect-ratio: 16/9) {
/* Apaisado desplegado */
}
API za segmente prozora pomaže u otkrivanju aktivni segmenti ekrana u okruženjima s više panela. Također se bavi prilagođavanjem viewport-a: pokriva zaobljene uglove ili izreze i detektuje orijentaciju iz JS-a kako bi prilagodio korisnički interfejs bez treperenja. Optimizirajte performanse sa lijenim učitavanjem i kompresijom za tipične scenarije multitaskinga sklopivog uređaja.
if (window.screenSegments) {
const segments = window.screenSegments;
console.log(segments);
}
/* CSS */
body { /* iOS/entornos compatibles */
viewport-fit: cover;
}
/* JS */
if (screen.orientation.type === 'landscape-primary') {
console.log('Modo apaisado');
}
Klase veličine: preporučeni pragovi i primjeri
Google preporučuje tri raspona širine/visine u dp-u koji se odlično uklapaju s mobilnim telefonima, preklopnim uređajima i tabletima. Kompaktno (0–599 dp), Srednje (600–839 dp), Prošireno (840+ dp). Sklopivi mobilni telefon U vertikalnoj orijentaciji može ostati u Srednjem; kada se proširi horizontalno obično postaje Prošireni.
Na osnovu toga, Liste možete zamijeniti mrežama sa 2-3 kolone Kada ima prostora, povećajte veličinu fonta na prošireno, a sadržaj neka bude čitljiv i u kompaktnom formatu. Material 3 pruža `material3-window-size-class` za pouzdano izračunavanje ovoga (imajte na umu da to može biti eksperimentalno i zahtijeva `@OptIn`).
UI prakse: višekratno upotrebljivi kompozitni elementi i slojevita logika
Dobar obrazac je centralizirati logiku određivanja veličine u jednoj tački (npr. korijenskom kompozibilnom objektu) i proslijediti izvedeno stanje za ostale. To sprečava da interni kompozitni elementi implicitno zavise od globalne veličine ekrana; ovo će ih učiniti višekratno upotrebljivim i testirabilnijim.
Za adaptivnu listu detalja, odlučite na najvišem nivou da li da je prikažete. jedan ili dva panela, ovisno o širinii pustite djecu da se fokusiraju na sadržaj. Ako kartica prikazuje dodatne informacije kada ima više prostora, odlučite se pomoću BoxWithConstraints ili modifikatora, ali nemojte zaključavati komponentu na jednu lokaciju ili veličinu.
Radna površina i višeprozorski način rada: pripremite se za selidbu
Na ChromeOS-u i android desktopVeličina prozora se mijenja kao u operativnom sistemu računara. Vaša aplikacija mora podržavati česte promjene veličine i održavati svoje stanje, bez zaključavanja fiksnom orijentacijom ili statičkim omjerom stranica. Googleovi emulatori i laboratorije za kodiranje odličan su način za metodično testiranje svega ovoga.
To je idealno okruženje za provjeru ispravnosti vaše aplikacije Ne vrši preračunavanje niti prenaplatu. Prilikom promjene veličine, prijelazi između rasporeda trebaju biti glatki. Ako korisnik minimizira i vrati se, aplikacija bi trebala nastaviti bez gubitka konteksta.
Raspored i zahtjevi za objavljivanje
Android 16 postavlja standarde: Kompatibilnost sa svim orijentacijama, omjerima širine i visine i promjenom veličine na ekranima ≥ 600dp za aplikacije koje ciljaju API 36 (s mogućnošću njegovog onemogućavanja u verziji 36, ali ne i u verziji 37).
Rokovi se razlikuju od prodavnice do prodavnice, ali Google Play će zahtijevati ciljni API 36 počevši od augusta 2026.Ako i dalje imate stroga ograničenja, vrijeme je da isplanirate migraciju kako biste izbjegli iznenađenja i, prije svega, poboljšali iskustvo na velikim ekranima.
Preporučeni resursi i testovi
Za vježbu, Google nudi kodne laboratorije usmjerene na promjenu veličine: posmatrajte LocalConfiguration, zabilježite životni ciklusMigrira ograničenja manifesta i omogućava rememberSaveable. Primjeri aplikacija Reply, JetNews i CanonicalLayouts prikazuju validirane obrasce za velike ekrane.
Za web timove, Chrome DevTools, BrowserStack i Samsung Remote Test Lab Olakšavaju testiranje u sklopljenom/rasklopljenom stanju. A ako radite s izvornim Androidom, emulatori Pixel Tablet/Fold i okvir kompatibilnosti UNIVERSAL_RESIZABLE_BY_DEFAULT su vaše igralište.
Napomena zajednice: očekivanja i stvarnost
Mnogi korisnici sklopivih laptopa komentiraju da Moraju to popraviti aplikaciju po aplikaciju. Skaliranje je primjetno, a neke igre izgledaju lošije. To je razumljivo u tranziciji ekosistema, ali Android 16 i njegove prakse adaptivnog dizajna utrle su put poboljšanju aplikacija. zaista iskoristite prednosti velikih ekranaŠto prije migrirate, prije će prestati pritužbe na istezanje i rezanje.
Ako, uprkos svemu, smatrate da vaš uređaj ne nudi iskustvo koje ste očekivali, postoje opcije za otkup i prodaju polovnih uređaja. U originalnom sadržaju spominjane su usluge poput Moviloffa. Da svoj stari mobilni telefon pretvorite u gotovinu i date mu drugi život, što ujedno pomaže i okolišu. Nije tehničko rješenje, ali bi vas moglo zanimati ako razmišljate o nabavci novog uređaja.
Savladavanje omjera stranica i promjene veličine u aplikacijama na sklopivi ekran zahtijeva prihvatanje novog modela: Omogućite sistemu da obrađuje velike prozore, kreira responzivne korisničke interfejse, čuva stanje i testira u stvarnim scenarijima.S obzirom na to da Android 16 napreduje (i da Android 37 zatvara vrata ograničenjima na velikim ekranima), put je jasan: usvojiti klase veličine prozora, očistiti manifest, izbjegavati rastegnute komponente, omogućiti skrolovanje, upravljati kamerom u obje orijentacije i mjeriti performanse.
Ako su vam potrebna hitna podešavanja, koristite sistemske opcije poput aplikacija preko cijelog ekrana i, s oprezom, postavku "Najmanja širina". Korisnici će odmah primijetiti razliku: vidljiviji sadržaj, manje izobličenja i iskustvo dostojno velikog ekrana. Podijelite ove informacije i više korisnika će znati kako promijeniti omjer širine i visine na svom mobilnom telefonu.