2013-07-03 35 views
7

Tôi đã sử dụng mã này như @gnobal được đăng trên https://stackoverflow.com/a/2700683/1556329 và nó hoạt động tuyệt vời. Nhưng vấn đề của tôi là tôi đã thấy rằng khi tôi áp dụng Theme.Transparent hoạt động không đi đến chế độ phong cảnh khi tôi xoay điện thoại di động.Màn hình hoạt động không xoay khi tôi xoay điện thoại di động

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> 

Hoạt động:

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

} 

Tại sao không thể nó được quay? Tôi đã cố gắng thay đổi windowIsFloating thành false và thay đổi các tham số khác mà không gặp may.

+0

Luis Martib Romera: Bạn có tìm thấy lý do khiến định hướng ngừng hoạt động với chủ đề được xác định ở trên không? Tôi cũng phải đối mặt với cùng một vấn đề, nhưng muốn biết lý do –

Trả lời

19

bạn có thể kiểm tra này

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

thêm một trong số họ để biểu lộ <activity............../> của bạn. và đừng quên để thêm video này vào ứng dụng của bạn trong manifest cũng như nếu bạn muốn tránh tái hoạt động của bạn android:configChanges="keyboardHidden|orientation|screenSize"

+0

Cảm ơn bạn K0sh, đã giải quyết được vấn đề. Tôi không hiểu tại sao trong một hoạt động bình thường, bạn không phải kích hoạt thuộc tính đó nhưng sử dụng chủ đề mới đó. Anyways cảm ơn bạn một lần nữa! –

+0

bạn hoan nghênh, vui mừng đã giúp bạn. – k0sh

+0

Làm việc cho tôi cũng cảm ơn rất nhiều! –

10

Nếu bạn đặt android:windowIsTranslucent hoặc android:windowIsFloating true thông báo xoay bị vô hiệu hóa (miễn là bạn không buộc họ phải được kích hoạt với android:screenOrientation="sensor").

+0

Đây là loại điều khiến các nhà phát triển không thể làm việc trên nền tảng Android. Bạn cần phải mất hàng tháng để có được tất cả quirks Android có .. – milosmns

+0

Vấn đề với điều này là màn hình sẽ chuyển ngay cả khi người dùng đặt chế độ Chân dung chỉ ... – Tiago

-1

Tôi có chủ đề với android:windowIsTransluent và các điểm dừng quay. Để bật tính năng này, tôi có thử nghiệm bằng cách thêm screenOrientation="sensor" cho ứng dụng, chủ đề và Hoạt động đầu tiên. Chỉ thêm vòng xoay cho Xoay vòng hoạt động đầu tiên cho tất cả các hoạt động trong ứng dụng.

0

Tôi gặp vấn đề tương tự. Trước khi thực hiện bất kỳ giải pháp nào, trước tiên hãy đảm bảo rằng tính năng xoay được bật và sau đó kiểm tra màn hình chính có thể xoay, nếu không, Khởi động lại điện thoại của bạn và sự cố sẽ được giải quyết!

Các vấn đề liên quan