ChromeOS, Android uygulamalarını birden fazla pencerede destekler. Sistem, uygulamaları pencere kapsayıcılarına bölerler. Bu kaplayacağı, boyutu reklamverenin form faktörüne gösteren bir e-posta adresi seçin.
Düzenlerin farklı ekran boyutlarıyla uyumlu olması önemlidir. Şu durumda: farklı ekranları desteklemek için Android yönergelerini uygulayın. boyutları ile ayarlarsanız uygulamanız da ChromeOS'te çalışırken.
Bu sayfada, uygulama penceresinin doğru bir şekilde başlatılmasını ve yeniden boyutlandırılmasını nasıl sağlayacağınız gösterilmektedir yumuşak bir şekilde ve boyutu değiştiğinde tüm içeriğini görüntüler.
İlk lansman boyutu
Uygulamalar ilk lansman boyutunu aşağıdaki şekillerde isteyebilir:
- Yalnızca masaüstü ortamlarında bir başlatma boyutu kullanın.
Bu, pencere yöneticisinin size uygun sınırları koymasına ve
Yönü. Masaüstü modunda kullanıldığında bir tercih belirtmek için
aşağıdaki meta etiketleri
<activity>
:
<meta-data android:name="WindowManagerPreference:FreeformWindowSize" android:value="[phone|tablet|maximize]" /> <meta-data android:name="WindowManagerPreference:FreeformWindowOrientation" android:value="[portrait|landscape]" />
- Statik başlatma sınırlarını kullanın.
<layout>
"düzeltilmiş" bir durum belirtmek için başlangıç boyutu:
<layout android:defaultHeight="500dp" android:defaultWidth="600dp" android:gravity="top|end" android:minHeight="450dp" android:minWidth="300dp" />
- Dinamik başlatma sınırlarını kullan. Bir etkinlik,
Yeni bir etkinlik oluştururken
ActivityOptions.setLaunchBounds(Rect)
. Ölçüt boş bir dikdörtgen belirttiğinizde uygulamanız en üst düzeye çıkarılabilir.
Pencereleri yeniden boyutlandırma
ChromeOS'te kullanıcılar bir uygulamanın penceresini normal şekilde, yani sürükleyerek yeniden boyutlandırabilirler. sağ alt köşesine dokunun.
Pencere boyutunu değiştirmek için
View
sınıf:
- Aşağıdakileri çağırarak yapılandırma değişikliklerine dinamik olarak yanıt verme
onConfigurationChanged(..)
Örneğin,android:configChanges="screenSize|smallestScreenSize|orientation|screenLayout"
. kullanabilirsiniz. Yapılandırma değişikliklerini işlemeyle ilgili daha fazla bilgi için Yapılandırma değişikliklerini işleme. - Sistemin etkinliği yeniden başlatmasına izin verin. Bu durumda,
onSaveInstanceState
ve ViewModel mimarisini kullanın bileşenini önceki durumu.
Jetpack Compose'u kullanırken yeniden boyutlandırma davranışı nasıl yapılandırıldığını görebilirsiniz. Değişiklikleri dinamik bir şekilde ele alırsa, yeniden oluşturma, pencere boyutu değiştiğinde tetiklenir. Etkinlik yeniden başlatılırsa, yeniden başlatmadan sonra bir ilk beste oluşur. İkisinden biri Bu nedenle, değişen pencerelere uyarlanan "Oluşturma" düzenleri oluşturmanız önemlidir. seçin. Sabit boyutları varsaymayın.
Pencere boyutları
Etkinliklerinizin her başlatıldığında pencere boyutlarını okumasını ve mevcut yapılandırmaya göre düzenleyebilir.
Mevcut yapılandırmayı belirlemek için getResources().getConfiguration()
işlevini çağırın
güncel bilgiler sağlar. Lütfen
arka plan etkinliğinin veya sistem kaynağının yapılandırması.
Arka plan etkinliğinin boyutu yok. Sistem yapılandırması
boyutları ve yönleri birbiriyle çelişen birden çok pencere içerdiği için kullanılamaz
veriler ayıklanabilir.
Pencere boyutu ile ekran boyutunun aynı olmadığını unutmayın. To almak için
DP'de pencere boyutu, Activity.getResources().getConfiguration().screenWidth
değerini kullanın
ve Activity.getResources().getConfiguration().screenHeight
. Muhtemelen bu
hiçbir zaman ekran boyutunu
kullanılması gerekmez.
İçerik sınırları
Bir pencerenin içerik sınırları, yeniden boyutlandırma işleminden sonra değişebilir. Örneğin, uygulama tarafından kullanılan pencere, pencere açılamayacak kadar büyük olursa ekrana sığdırır. Aşağıdaki yönergeleri izleyin:
- Android'in düzen işlemini kullanan uygulamalar otomatik olarak yerleştirilir. kullanabilirsiniz.
Yerel uygulamaların, mevcut alanı okuması ve boyut değişikliklerini izlemesi, böylece kullanıcı arayüzü öğeleri içeriyor. Hedef kitlenizin tahminini belirlemek için bu yüzey için kullanılabilir ilk boyut:
NativeActivity.mLastContent[X/Y/Width/Height]()
findViewById(android.R.id.content).get[Width/Height]()
Sürekli izleme bir gözlemci kullanılarak yapılabilir:
NativeActivity.onContentRectChangedNative()
NativeActivity.onGlobalLayout()
view.addOnLayoutChangeListener(findViewById(android.R.id.content))
için dinleyici ekleyin
Uygulama, posterin ön ölçeklendirmesini yapıyorsa çözünürlük her değiştiğinde bunu yapın.
Serbest biçimli yeniden boyutlandırma
ChromeOS, tüm pencerelerin serbestçe yeniden boyutlandırılmasına olanak tanır. Kullanıcı bir pencerenin ekranda genişliği, yüksekliği ve konumu. Birçok Android uygulaması uygun olduğuna karar verdik. Şu hususları göz önünde bulundurun:
- Ekran konumu değişebilir. Her zaman ekrandan pencereye ve ekrandan pencereye koordinat dönüşümleri gerçekleştirmek üzere çalışan bir sistemdir.
- Android'in görünüm sistemini kullanıyorsanız pencere düzeniniz boyutu değiştiğinde otomatik olarak değişir.
- Görüntüleme sistemini kullanmıyor ve yüzeyi ele alamıyorsanız uygulamanız kendi kendine yönetmesi için bir fırsattır.
- Yerel uygulamalarda
mLastContent
üyelerini kullanın veya içerik görünümünü kullanarak boyutu belirler. - Uygulama çalışırken
onContentRectChangedNative
veya Boyut değişikliklerine tepki vermek içinonGlobalLayout
etkinlik. - Uygulamanın boyutu değiştiğinde düzenler ve posterleri yeniden ölçeklendirin veya yeniden yükleyin giriş alanlarını güncelleyin.
Tam ekran modu
Tam ekran modu, stok Android'de olduğu gibi çalışır. Pencere tüm ekranı kapatmıyorsa tam tarama isteğinde bulunur. (tüm sistem kullanıcı arayüzü öğeleri gizlenir) yoksayılır. Uygulama büyütüldüğünde normal tam ekran yöntemleri, düzenler ve işlevleri gerçekleştirilir. Bu işlem, sistem kullanıcı arayüzü öğelerini (pencere kontrol çubuğu ve raf) gizler.
Ekran yönü
Android uygulamalarında en yaygın kullanılan yön dikeydir çünkü bu şekilde çoğu telefon tutulur. Dikey görünüm telefonlar için iyi olsa da (yatayın tercih edildiği, dizüstü bilgisayar ve tabletlerinde) Şunları almak için: en iyi sonuçları elde etmek istiyorsanız her iki yönü de desteklemeyi düşünün.
Bazı Android uygulamaları, cihaz dikey modda tutulduğunda
rotasyon değeri:
Surface.ROTATION_0
Bu durum çoğu Android cihaz için geçerli olabilir. Ancak, uygulama
belirli
ARC modundaysa
dikey yön için döndürme değeri
Surface.ROTATION_0
.
İvme ölçeri veya benzeri değerleri okurken doğru dönüş değeri elde etmek için
için Display.getRotation()
bağlantısını kullanın
yöntemini kullanın ve ekseni buna göre değiştirin.
Kök etkinliği ve yönü
Bir Chromebook penceresi, yığın etkinlik pencerelerinden oluşur. Her pencere boyutu ve yönü aynı.
Masaüstünde ani yön ve boyut değişikliklerinin kafa karıştırıcı olması bahsedeceğim. Chromebook pencere yöneticisi bunu benzer bir şekilde önler Android'in yan yana moduna: Yığın denetimlerinin alt kısmındaki etkinlik özelliklerine sahip olduğundan emin olun. Bu da beklenmedik durumlara yol açabilir Burada dikey ve yeniden boyutlandırılamayan yeni başlayan bir aktivite yatay hâline geliyor. yeniden boyutlandırabilirsiniz.
Cihaz modunun bu konuda bir etkisi vardır: Tablet modunda yön kilitli değilken ve her pencere Android'de normalde olduğu gibi kendi yönünü korur.
Yön kuralları
Kullanım yönü için aşağıdaki yönergeleri uygulayın:
- Yalnızca bir yönü destekliyorsanız bilgileri manifest dosyasına ekleyerek uygulamaya başlamadan önce pencere yöneticisinden haberdar olması gerekir. Google Takvim widget'ını yönü belirtin ve mümkün olduğunda sensör yönlerini de belirtin. Chromebook'lar genellikle dönüştürülebilirdir ve ters çevrilmiş bir uygulama kötü bir kullanıcı deneyimidir.
- Seçilen tek bir yönde kalmaya çalışın. Tek bir yön istemekten kaçının oluşturup daha sonra programatik olarak başka bir tane ayarlayın.
- Yönü pencere boyutuna göre değiştirirken dikkatli olun. Kullanıcı, küçük bir dikey boyutlu pencerede takılıp kalıyor ve daha büyük bir pencereye yatay pencere.
- Chrome'da, mevcut olan tüm uygulamalar arasında geçiş yapabileceğiniz pencere kontrolleri vardır düzenler. Doğru yön seçeneğini belirleyerek kullanıcının sonra doğru düzene sahip. Uygulama dikey modda mevcutsa mümkünse varsayılan olarak yatay yapın. Bu seçenek belirlendikten sonra her uygulama için hatırlanır.
- Gereksiz yön değişikliklerinden kaçınmaya çalışın. Örneğin,
yön dikey ancak uygulama
setRequestedOrientation(LANDSCAPE)
çağırıyor bu, çalışma zamanında pencerenin gereksiz yeniden boyutlandırılmasına neden olur. Bu da çalışan tarafından işlenemez ve uygulamanın işleyemediği uygulamayı yeniden başlatabilir. Hedef kitlenizi belirlemek Yönü bir kez (örneğin, manifest'te) çıkarıp yalnızca bakın.
Dikkat edilmesi gereken diğer noktalar
Android uygulamalarıyla çalışırken göz önünde bulundurmanız gereken diğer bazı noktalar aşağıda belirtilmiştir: ChromeOS:
- Etkinliğinizin
onDestroy
yöntemindefinish()
yöntemini çağırmayın. Bu durum, uygulamanın yeniden boyutlandırıldıktan sonra kapanmasını sağlamaz. TYPE_KEYGUARD
ve gibi uyumlu olmayan pencere türlerini kullanmayın.TYPE_APPLICATION_MEDIA
.- Önceden oluşturulmuş nesneleri önbelleğe alarak etkinliğin hızlı bir şekilde yeniden başlatılmasını sağlayın tahsis edilmiş olabilir.
- Kullanıcının uygulamanızı yeniden boyutlandırmasını istemiyorsanız
android:resizeableActivity=false
. - Uygulamanızı test ederek doğru şekilde ayarlamanız gerekir.