2013-07-03 27 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

あなたのマニフェスト<activity............../>にそれらのいずれかを追加し、この

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

をチェックアウトすることがあります。 とあなたはそうしない限り、(真 回転の通知にandroid:windowIsTranslucentandroid:windowIsFloatingが無効になっている設定android:configChanges="keyboardHidden|orientation|screenSize"

+0

ありがとうK0sh、その問題を解決しました。私は通常のアクティビティでその属性を有効にする必要はないが、新しいテーマを使用する理由を理解していません。とにかく再びありがとう! –

+0

あなたを歓迎して、あなたを助けてくれてうれしいです。 – k0sh

+0

大変感謝してくれたよ! –

10

場合は、あなたの活動再作成を回避したい場合にもマニフェストでアプリケーションにこれを追加することを忘れないでくださいそれらをandroid:screenOrientation="sensor"で有効にしてください)。

+0

これは、開発者がAndroidプラットフォームで作業することを遠ざけるようなものです。 Androidが持っている癖。 – milosmns

+0

この問題は、ユーザーがポートレートモードのみを設定しても画面が回転することです... – Tiago

-1

テーマはandroid:windowIsTransluentであり、回転が停止します。それをオンにするには、アプリケーション、テーマ、および最初のアクティビティにscreenOrientation="sensor"を追加して実験を行います。アプリケーション内のすべてのアクティビティに対して、最初のアクティビティのローテーションを追加するだけで回転をオンにします。

0

私は同じ問題がありました。 解決策を実行する前に、回転機能が有効になっていることを確認してから、回転するホーム画面を確認してください。そうでない場合は、携帯電話を再起動すると問題が解決します。

関連する問題