, screenOrientation
belirtmek için birden fazla farklı yolları vardır userLandscape
'u nasıl belirleyebilirim, ancak Android'in eski sürümlerinde'ye geri dönebilirve daha eski sürümlerde bile landscape
'a mı dönüyoruz? Bunu belgelerde nasıl yapacağımı bulamadım.Bildirim geri dönüşün <a href="http://developer.android.com/guide/topics/manifest/activity-element.html">documentation for the Android manifest</a> olarak
cevap
Bildirimin kendisinde bulunan geri dönüş mekanizmasının uygulanmasının bir yolu olduğunu sanmıyorum.
Bildiride {userLandscape, sensorLandscape, landscape} öğelerinden birini belirtmenizi öneririm. Ardından, çalışma zamanında sürümü kontrol edin ve doğaçlama yapın. Belirtide, android:screenOrientation="userLandscape"
ile birlikte çalışmaya karar verdiniz. Gelen
içeriği ayarlamadan önce Etkinliğin onCreate(Bundle)
,: Birisi bundan daha iyi bir çözüm ile geliyor
int sdkInt = Build.VERSION.SDK_INT;
// if we're running on some API level within [9, 18), use `sensorLandscape`
if (sdkInt >= Build.VERSION_CODES.GINGERBREAD /* 9 */
&& sdkInt < Build.VERSION_CODES.JELLY_BEAN_MR2 /* 18 */) {
setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else if (sdkInt < Build.VERSION_CODES.GINGERBREAD /* 9 */) {
setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
// API 18 or above - handled in manifest
setContentView(R.layout.whatever);
Umut. Bu kaba kuvvet gibi görünüyor.
Düzenleme:
farklı bir yaklaşım çalıştı - Biliyorum kadarıyla, çeteleler böyle userLandscape
olarak, sensorLandscape
vb değerlerini değiştirmez (ve burada yanlış olabilir). şu anda dururken:
<!-- `0` for `landscape` -- defined in values/integers.xml -->
<integer name="customScreenOrientation">0</integer>
<!-- `6` for `sensorLandscape` -- defined in values-v9/integers.xml -->
<integer name="customScreenOrientation">6</integer>
<!-- `11` for `userLandscape` -- defined in values-v18/integers.xml -->
<integer name="customScreenOrientation">11</integer>
Ardından etkinliğin etiketinde android:screenOrientation
değeri olarak @integer/customScreenOrientation
kullanabilirsiniz: Eğer olsaydı
<attr name="screenOrientation">
<enum name="unspecified" value="-1" />
<enum name="landscape" value="0" />
<enum name="portrait" value="1" />
<enum name="user" value="2" />
<enum name="behind" value="3" />
<enum name="sensor" value="4" />
<enum name="nosensor" value="5" />
<enum name="sensorLandscape" value="6" />
<enum name="sensorPortrait" value="7" />
<enum name="reverseLandscape" value="8" />
<enum name="reversePortrait" value="9" />
<enum name="fullSensor" value="10" />
<enum name="userLandscape" value="11" />
<enum name="userPortrait" value="12" />
<enum name="fullUser" value="13" />
<enum name="locked" value="14" />
</attr>
Yani, bir integer
gibi tanımlamak için.
En iyi şekilde bir kesmek olduğunu söylemeye gerek yok. Birisi, screenOrientation
için enum değerlerinin sabit durumunu doğrulayabilirse, bu geçerli bir çözüm olabilir - birden çok etkinlikte daha önceki öneriden kod eklemeyi tercih edebilir.
Henüz başka düzenleme: Daha önce bahsettiğim İkinci yaklaşım üzerine geliştirilebilir
: Yerine birden integers.xml
dosyaların
, 3 styles.xml
dosyaları oluşturmak. Sanırım zaten bir tane var - values/styles.xml
. values-v9/styles.xml
& values-v18/styles.xml
oluşturun.üzerinde
<activity
....
android:theme="@style/AppTheme"
android:screenOrientation="@integer/customScreenOrientation"/>
Bu yaklaşımın avantajı:
<integer name="customScreenOrientation">?android:attr/screenOrientation</integer>
Etkinlik etiketi gibi görünecektir:
<!-- values/styles.xml -->
<style name="AppTheme" parent="@style/BaseTheme">
<item name="android:screenOrientation">landscape</item>
</style>
<!-- values-v9/styles.xml -->
<style name="AppTheme" parent="@style/BaseTheme">
<item name="android:screenOrientation">sensorLandscape</item>
</style>
<!-- values-v18/styles.xml -->
<style name="AppTheme" parent="@style/BaseTheme">
<item name="android:screenOrientation">userLandscape</item>
</style>
Bunu takiben, bir tamsayı customScreenOrientation
values/integers.xml
(bir dosya) oluşturmak ve tanımlamak İkincisi, enumları kodlanmış değerler yerine kullanmamızdır. Yine, bu iki yaklaşım, enum değerleri taşa ayarlanırsa denktir. Eğer değişirlerse, üçüncü yaklaşım devam ederken ikinci yaklaşım başarısız olur.
- 1. Sadece <a href="#"> for "back to top" button at bottom of the page?
- 2. - değil <a href>
- 3. <a href.. in PHP
- 4. Javadoc benzeri Documentation for C++
- 5. Bu kod parçasını C# kodu açısından açıklar mısınız? <a href="https://kotlinlang.org/docs/reference/idioms.html#convenient-form-for-a-generic-function-that-requires-the-generic-type-information">Kotlin documentation</a> sayfasından
- 6. Bootstrap'te .row'un amacı nedir? <a href="http://getbootstrap.com/css/" rel="nofollow noreferrer">Bootstrap's documentation</a> göre
- 7. CSS - Neden <a href> elements?
- 8. jQuery .parent() <a href="http://jsfiddle.net/TCZV3/" rel="noreferrer">the following code</a> ile başarısız Neden
- 9. Şekillendirici <a> yok href özniteliği
- 10. <a></a> href değerini, dinamik olarak liste görünümü
- 11. Desen <a href="https://github.com/jashkenas/coffee-script">source code for CoffeeScript on Github</a> incelerken
- 12. ImageButton dokunmatik geri bildirim
- 13. Spring Mobile: DeviceWebArgumentResolver programlı olarak nasıl eklenir? <a href="http://static.springsource.org/spring-mobile/docs/1.0.x/reference/htmlsingle/" rel="noreferrer">documentation</a> mobil
- 14. StateListAnimator nasıl kullanılır? <a href="https://developer.android.com/preview/material/animations.html#viewstate">docs</a> itibaren
- 15. Niçin bir String'e başvurmak a & str? Bu örnek kodda <a href="https://doc.rust-lang.org/std/string/struct.String.html" rel="nofollow">from the Rust documentation</a> yılında
- 16. appengine ndb.tasklet nasıl anlaşılır? <a href="https://developers.google.com/appengine/docs/python/ndb/async#tasklets" rel="noreferrer">documentation</a> itibaren
- 17. x64 çağırarak kongre (yığın) ve <a href="http://msdn.microsoft.com/en-us/library/dd2wa36c.aspx" rel="noreferrer">Microsoft's documentation</a> okudum
- 18. GHC RTS'nin zamanlayıcısında, neden bir yeteneği ücretsiz olarak işaretlemeli? Ben <a href="http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/Scheduler" rel="noreferrer">the GHC Wiki commentary on the scheduler</a> okuduğunuzda
- 19. Atama/yeni/init yöntemlerinde instancetype kullanılmalı mıdır? <a href="http://clang.llvm.org/docs/LanguageExtensions.html#objective-c-features" rel="noreferrer" title="clang documentation">clang documentation</a> göre
- 20. $ Interval'ın invokeApply parametre açısal en <a href="https://docs.angularjs.org/api/ng/service/$interval" rel="nofollow noreferrer">documentation</a> $ aralığı hizmetinden şey
- 21. Google Geliştirici Konsolu'nda bir APK yüklemeden önce Uygulama İçi Ürünler'i neden tanımlayamıyorum? Android'de <a href="http://developer.android.com/google/play/billing/billing_testing.html" rel="nofollow noreferrer">documentation for testing In-App-Purchases</a> (IAP'lere) olarak
- 22. Oluşturmak Build.FINGERPRINT on the Android
- 23. Çift geri bildirim sorunu
- 24. ebay geri bildirim Sayfamı göster
- 25. Grails 3 Kontrolör Kapsam <a href="https://grails.github.io/grails-doc/latest/ref/Controllers/scope.html" rel="nofollow">Grails 3 documentation</a> baktığımızda
- 26. Metin kutusuna izin ver geri bildirim gönderiliyor
- 27. <a href="http://www.rubymotion.com">Rubymotion</a> yılında
- 28. Bir site için site.ENABLE_USER_SITE` nasıl devre dışı bırakılır? <a href="https://docs.python.org/3.3/library/site.html#site.ENABLE_USER_SITE">the docs</a> itibaren
- 29. DVWA Ben <a href="http://www.dvwa.co.uk/" rel="nofollow noreferrer">DVWA</a> yapılandırmış
- 30. Bildirim alındığında bildirim geldiğinde android
Bu çalışır. Daha zarif bir çözüm görmek isterdim, ama belki de bir tane yok. – Tenfour04
@ Tenfour04 Biraz daha bununla uğraşıyordum ve başka bir geçici çözüm buldum - bu benim görüşüme göre zarif değil, ancak daha az kod içeren bir çözüm sunuyor. – Vikram
@ Tenfour04 Yedekleme mekanizmasını uygularken başka bir (son umudum) yolu ekledim. – Vikram