Pantalla completa en WindowManager
Este es mi código:
params = new WindowManager.LayoutParams( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, PixelFormat.TRANSLUCENT); wm = (WindowManager) getApplicationContext() .getSystemService(Context.WINDOW_SERVICE); inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); mTopView = (ViewGroup) inflater.inflate( R.layout.activity_invisible, null); params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_DIM_BEHIND | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |WindowManager.LayoutParams.FLAG_FULLSCREEN; if(keep==true){ int value = brightnessIntent.getExtras().getInt("value"); float v=value/255.0f; params.dimAmount=0; params.alpha=v; rl = (RelativeLayout) mTopView.findViewById(R.id.window); getWindow().setAttributes(params); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); wm.addView(mTopView, params); }
La vista todavía muestra la barra de estado, mTopView
es una ventana de superposición. ¿Cómo obtengo la ventana de superposición para cubrir toda la pantalla? No quiero "ocultar" la barra de estado, quiero que mi actividad se superponga a ella.
- Agregar y eliminar un TextView dinámicamente en Android
- La animación de ViewGroup no funciona
- Android View.bringToFront () causa parpadeo
- Relación de aspecto fija
- Nueve parches en un grupo de vistas personalizado
[EDIT] enfatizó el texto que ya tengo esto en mi método onCreate()
:
requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Y mi manifiesto define un estilo que cuenta con pantalla completa.
SCREENSHOTS
Así es como es actualmente, quiero que la superposición se extienda a la barra de estado también.
- Generando un LayoutParams basado en el tipo de padre
- Android View y ViewGroup
- Implementar Drag & Drop en pan de jengibre
- Android: usando MotionEvent para arrastrar y soltar el posicionamiento de vistas en un grupo de vistas personalizado
- Android: El uso de FEATURE_NO_TITLE con ViewGroup personalizado deja espacio en la parte superior de la ventana
- OnMeasure no se llama en mi grupo de vista personalizado android
- Cómo obtener una referencia al grupo de vista principal
- Android ViewGroup crash: Intenta leer desde el campo 'int android.view.View.mViewFlags' en una referencia de objeto nulo
Todo lo que tenía que hacer era
params.flags=WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN| and the rest
Esto amplía la vista de superposición sobre la barra de estado.
Este código de "Android Application 4 Development". Usted tiene que manejar diferentes versiones de Android
// Hiding the Action Bar for different android versions if (Build.VERSION.SDK_INT < 16) { // Hide the Action Bar on Android 4.0 and Lower getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); }else { // Hide the Action Bar on Android 4.1 and Higher View decorView = getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(uiOptions); android.app.ActionBar actionBar = getActionBar(); actionBar.hide(); }
Puede ocultar la barra de estado de dos maneras:
1) Defina debajo de la línea en su onCreate()
actividad onCreate()
.
requestWindowFeature(Window.FEATURE_NO_TITLE);
2) Defina el tema en el nivel de aplicación para no mostrar la barra de estado a través de la aplicación como se muestra a continuación:
<application android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
Prueba esto..
requestWindowFeature(Window.FEATURE_NO_TITLE);
No ocultará su barra de estado, su aplicación será cubierta en pantalla completa sólo la barra de estado será visible
public class example extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.example); } }
Y para ocultar la barra de estado
puedes usar
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
Intenta de esta manera
final WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, PixelFormat.TRANSLUCENT); WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); ViewGroup mTopView = (ViewGroup) App.inflater.inflate(R.layout.main, null); getWindow().setAttributes(params); wm.addView(mTopView, params);
Para crear siempre una actividad de superposición de pantalla completa en Android:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); getWindow().setBackgroundDrawableResource(android.R.color.transparent); getWindow().setFormat(PixelFormat.TRANSLUCENT); setContentView(R.layout.main); }
Configuración translúcida tiene que ser habilitado externamente en xml manifiesto, de lo contrario también no funcionó.
<item name="android:windowIsTranslucent">true</item>
- ¿Cómo mostrar la animación de progreso de carga para alguna imagen?
- Botón de aplicaciones recientes de interceptación de Android