2013-07-03 164 views
7

我使用此代碼作爲@gnobal發佈在https://stackoverflow.com/a/2700683/1556329上,它的效果很好。但我的問題是,我發現當我應用Theme.Transparent時,活動不會轉到橫向模式,當我旋轉手機。當我旋轉手機時,活動屏幕不旋轉

主題:

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

佈局:

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

活動:

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

} 

爲什麼它不能被旋轉?我試圖改變windowIsFloating爲false,並改變其他參數,但沒有運氣。

+0

Luis Martib Romera:你有沒有發現方向停止使用上述定義主題的原因?我也面臨同樣的問題,但想知道原因 –

回答

19

你可以看看這個

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

添加其中的一個您的清單<activity............../>。 不要忘記把它添加到您的清單應用程序,以及如果你想避免重新創建活動android:configChanges="keyboardHidden|orientation|screenSize"

+0

謝謝K0sh,解決了這個問題。我不明白爲什麼在正常的活動中,您不必激活該屬性,而是使用它所做的新主題。反正再次謝謝你! –

+0

歡迎您,很高興這對您有所幫助。 – k0sh

+0

爲我工作以及非常感謝! –

10

如果設置android:windowIsTranslucentandroid:windowIsFloating真 旋轉通知被禁用(只要你不強制它們啓用android:screenOrientation="sensor")。

+0

這是一種驅動開發者遠離在Android平臺上工作的東西。你需要花費幾個月的時間來獲得所有的Android的怪癖.. – milosmns

+0

與此問題是,即使用戶只設置肖像模式,屏幕將轉動... – Tiago

-1

我有android:windowIsTransluent和旋轉停止的主題。要打開它,我通過爲應用程序,主題和第一個活動添加screenOrientation="sensor"來進行實驗。只爲第一個活動輪流添加旋轉,用於應用程序中的所有活動。

0

我有同樣的問題。 在做任何解決方案之前,首先確保啓用了旋轉功能,然後檢查可以旋轉的主屏幕,如果沒有,重新啓動手機並解決問題!