Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Activity screen not rotating when I rotate mobile

I have used this code as @gnobal posted on https://stackoverflow.com/a/2700683/1556329 and it works great. But my issue is that I have found that when I apply Theme.Transparent the activity does not goes to landscape mode when I rotate the mobile phone.

Theme:

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

Layout:

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

Activity:

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

}

Why can't it be rotating? I have tried to change windowIsFloating to false, and change other parameters without luck.

like image 569
Jose Luis Martín Romera Avatar asked Jul 03 '13 23:07

Jose Luis Martín Romera


People also ask

Why is my screen not rotating when I turn my phone?

Open your device's Settings app. . Select Accessibility. Select Auto-rotate screen.

Is activity destroyed on rotation?

When you rotate your device and the screen changes orientation, Android usually destroys your application's existing Activities and Fragments and recreates them. Android does this so that your application can reload resources based on the new configuration.

How do I fix my screen rotation not working?

Turn On Screen Rotation From Android Settings In case you have a non-functional tile in Quick Settings, this method should fix your problem. Launch the Settings app on your Android phone. Tap Display in the list of items. Turn on the option that says Auto-rotate screen.

How do I change the orientation of my activity on Android?

If you want to manually handle orientation changes in your app you must declare the "orientation" , "screenSize" , and "screenLayout" values in the android:configChanges attributes.


1 Answers

you may check out this

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

add one of them to your manifest <activity............../>. and don't forget to add this to your application in manifest as well if you wish to avoid recreating your activity android:configChanges="keyboardHidden|orientation|screenSize"

like image 166
Kosh Avatar answered Oct 12 '22 20:10

Kosh