2011-11-18 23 views
14

Android telefonlar ve tabletlerle uyumlu olması amaçlanan bir Android projesinde çalışıyorum. Tablette uygulama harika çalışıyor ve iyi görünüyor. Bununla birlikte, telefonda hem programlı hem de mizanpajlı bir şekilde çalışıyoruz (10.1 inçlik bir ekranla çalışmak 4 inçlik bir ekrandan çok daha kolay). Bu sorunlardan bazılarını çözmek için ekran yönlendirmesini devre dışı bırakmaya karar verdik, ancak yalnızca telefonun sürümü için, geçici olarak en azından.Telefon için ekran yönünü nasıl kilitlerim, tablet için değil? (Android)

Soru basit, Android tabletler için etkin kalırken, Android telefon için ekran yönünü nasıl devre dışı bırakabilirim? Bunu manifest dosyasında yapabileceğimi biliyorum, ancak bu da inanıyorum tablet için yönünü kilitleyecektir.

cevap

11

Bunu uygulamadan da yapabilirsiniz.

Lock screen orientation (Android)
http://developer.android.com/reference/android/app/Activity.html#setRequestedOrientation(int)

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

Ve özellikleri burada bulunabilir:

http://developer.android.com/reference/android/R.attr.html#screenOrientation


Android cihazı Tablet veya Telefon ise, algılamak için, bu çözümü kullanmalıdır (farklı SO Q & A), https://stackoverflow.com/a/9308284/492624

+1

Neden bu cevabı olarak geçerli ayarlanır etkinlik olarak

bir yöntem oluşturmak? Telefonda ve tablette farklı davranışların nasıl ayarlanacağını açıklamıyor. –

2

Bu, çalışma zamanında ele alırsanız, ekran boyutu alıp RunTimeConfigurationChanges yaptıktan sonra imkansız gibi görünmüyorsa, o zaman size yardımcı olabilir.

Bunu deneyin Handling Runtime Changes.

Sonra da üzerine başarı elde varsa bana bildirin ..

teşekkürler.

+0

Sana katılıyorum ama yapılabilirdi. Bunu yapmak için: 1. Aygıtın ekran çözünürlüğünü öğrenin. 2. Etkinlikte ConfigfigurationChanged yöntemini geçersiz kılın. –

1

Bir yöntem, telefon sürümü ve tablet sürümü için ayrı etkinlikler oluşturur. Ve daha sonra android manifest dosyasındaki yönelimlerini düzeltin. Diğer bir yöntem, ayrı oluşturma aktiviteleri sekmesi ve telefon sürümlerini korumak için, kolay olarak iyi bir yoldur,

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

halen kullanılmakta olan cihazını kontrol ve kod kullanarak aktivite kendisinde yönünü düzeltmek etmektir.

10

Her şeyden önce, bunu engellemeye çalışın. Bunu seçtim çünkü karmaşık bir problem için kolay bir çözümdü. Ama gerçekten, bunu yapmayı engellemeye çalışın.

Gerçekten yapmak isterseniz, aşağıdaki kodu kullanın.

private boolean isTablet() { 
     return (this.getResources().getConfiguration().screenLayout 
      & Configuration.SCREENLAYOUT_SIZE_MASK) 
      >= Configuration.SCREENLAYOUT_SIZE_LARGE; 
    } 

Ve sonra onCreate içinde aşağıdakileri yapın::

if (!isTablet()) { 
     // stop screen rotation on phones because <explain> 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    } 
İlgili konular