2013-07-03 11 views
7

Użyłem tego kodu jako @gnobal opublikowanego na https://stackoverflow.com/a/2700683/1556329 i działa świetnie. Ale moim problemem jest to, że stwierdziłem, że gdy stosuję Theme.Transparent, działanie nie przechodzi w tryb poziomy, kiedy obracam telefon komórkowy.Ekran aktywności nie obraca się, gdy obracam telefon komórkowy

Motyw:

<style name="Theme.Transparent" parent="android:Theme.Dialog"> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:backgroundDimEnabled">false</item> 
    </style> 

Układ:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/layoutImagen" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

    android:orientation="vertical" 
    android:windowContentOverlay="@null" 
    android:windowNoTitle="true" 
    tools:context=".ImagenExamen_activity" > 

<!--  android:background="#CC000000" --> 
<!--  android:backgroundDimEnabled="true" --> 

    <ImageView 
     android:id="@+id/imageViewImagen" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" /> 

</LinearLayout> 

aktywny:

import android.app.Activity; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ImageView; 

import com.meapp.Utilities; 

public class Imagen_activity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_imagen_examen); 

     Bundle b = getIntent().getExtras(); 
     String imagen = b.getString("imagen_name"); 
     int id = getResources().getIdentifier(imagen, "drawable", getPackageName()); 

     ImageView imageView = (ImageView) findViewById(R.id.imageViewImagen); 


     // Determinacion tamaño fuente 
     BitmapFactory.Options bitmapOpt = new BitmapFactory.Options(); 
     bitmapOpt.inJustDecodeBounds = true; 
     BitmapFactory.decodeResource(getResources(), id, bitmapOpt); 

     int[] screen_dim = Utilites.verDimensionesPantalla(this); 


       // más eficiente si se usa una potencia de 2 
     imageView.setImageBitmap(Utilities 
       .decodeSampledBitmapFromResource(getResources(), id, 
         screen_dim[0], screen_dim[1], true)); 



     imageView.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       cerrarImagen(); 
      } 
     }); 


    } 

    public void cerrarImagen() { 
     ((Activity) this).finish(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.imagen_examen_, menu); 
     return true; 
    } 

} 

Dlaczego nie może się obracać? Próbowałem zmienić windowIsFloating na false i zmienić inne parametry bez powodzenia.

+0

Luis Martib Romera: Czy znalazłeś powód, dla którego orientacja przestała działać z powyższym motywem? Mam również do czynienia z tym samym problemem, ale chcę znać powód –

Odpowiedz

19

można sprawdzić ten

   android:screenOrientation="sensor" 
or 
      android:screenOrientation="user" 

dodać jeden z nich do oczywistego <activity............../>. i nie zapomnij dodać go do stosowania w oczywisty jak dobrze, jeśli chcesz uniknąć odtwarzając swoją aktywność android:configChanges="keyboardHidden|orientation|screenSize"

+0

Dziękuję K0sh, który rozwiązał problem. Nie rozumiem, dlaczego w normalnym działaniu nie musisz aktywować tego atrybutu, ale używasz tego nowego motywu. W każdym razie dziękuję jeszcze raz! –

+0

Witamy, cieszę się, że ci pomogłem. – k0sh

+0

Pracowałem dla mnie i dziękuję bardzo! –

10

Jeśli ustawisz android:windowIsTranslucent lub android:windowIsFloating do prawdziwych powiadomień obrotu są wyłączone (tak długo, jak nie zmusić je do włączenia przy pomocy android:screenOrientation="sensor").

+0

To jest coś, co powoduje, że programiści nie pracują na platformie Android. Musisz spędzić miesiące, aby zdobyć wszystkie dziwactwa, które ma Android .. – milosmns

+0

Problem polega na tym, że ekran się zmieni, nawet jeśli użytkownik ustawi tylko tryb Portret ... – Tiago

-1

Mam motyw z android:windowIsTransluent i zatrzymuje się obrót. Aby go włączyć, eksperymentuję, dodając screenOrientation="sensor" dla aplikacji, motywu i pierwszego działania. Dodawanie rotacji tylko dla pierwszego działania Włączanie obrotu dla wszystkich działań w aplikacji.

0

Miałem ten sam problem. Przed przystąpieniem do jakichkolwiek rozwiązań, najpierw upewnij się, że funkcja obrotu jest włączona, a następnie sprawdź ekran główny, który można obrócić, jeśli nie, uruchom ponownie telefon, a problem zostanie rozwiązany!

Powiązane problemy