2013-07-03 10 views
7

Bu kodu https://stackoverflow.com/a/2700683/1556329 üzerinde @gnobal olarak kullanıyorum ve harika çalışıyor. Ancak benim sorunum, Theme.Transparent uyguladığımda, cep telefonunu döndürdüğümde etkinliğin manzara moduna geçmediğini buldum.Mobil ekran döndürdüğümde etkinlik ekranı dönmüyor

Tema:

<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> 

Düzen:

<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> 

Etkinlik:

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; 
    } 

} 

Neden dönen edilemez? WindowIsFloating öğesini false olarak değiştirmeye çalıştım ve diğer parametreleri şanssız olarak değiştirdim.

+0

Luis Martib Romera: Oryantasyonun yukarıda tanımlanan tema ile çalışmayı durdurmasının nedenini buldunuz mu? Ben de aynı sorunla karşı karşıyayım, ama sorunu çözdü –

cevap

19

bu

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

Manifest'inizde <activity............../> bunlardan bir tane ekleyin kontrol edilebilir. ve size değil mi sürece (doğru rotasyon bildirimlerine android:windowIsTranslucent veya android:windowIsFloating devre dışı set android:configChanges="keyboardHidden|orientation|screenSize"

+0

Teşekkür ederim K0sh, nedenini bilmek istiyorum. Normal bir etkinlikte neden bu özelliği etkinleştirmek zorunda olmadığını, ancak bu yeni temayı kullanmanın nedenini anlamıyorum. Yine de tekrar teşekkürler! –

+0

hoş geldiniz, bu size yardımcı oldu sevindim. – k0sh

+0

Benim için de çalıştım çok teşekkürler! –

10

Eğer etkinlik yeniden önlemek istiyorsanız yanı Manifest'inizde uygulamanıza bu eklemeyi unutmayın android:screenOrientation="sensor" ile etkinleştirilmelerini zorlar.

+0

Bu, Android platformunda çalışmaktan uzaklaşan geliştiricileri çalıştıran şeylerden birkaçıdır. Android'in sahip olduğu quirks .. – milosmns

+0

Buradaki sorun, kullanıcı sadece Portre modunu ayarlansa bile ekranın dönmesidir ... – Tiago

-1

android:windowIsTransluent ile temayı ve döndürme durur. Bunu açmak için uygulama, tema ve ilk Etkinlik için screenOrientation="sensor" ekleyerek denemeye sahibim. Yalnızca ilk Etkinlik için rotasyon ekleme, uygulamadaki tüm etkinlikler için dönüşü döndürür.

0

Aynı problem vardı. Herhangi bir çözüm yapmadan önce, önce döndürme özelliğinin etkinleştirildiğinden emin olun ve ardından döndürülebilen ana ekranınızı kontrol edin, hayır ise, Telefonunuzu yeniden başlatın ve sorun çözülecektir!