2013-09-27 1 views
5

Ho un'app che imposto lo sfondo su un'immagine da xml. Ottengo la vista chiamandoAggiungi overlay semitrasparente all'attività backround in fase di esecuzione

setContentView(R.) 

. Come posso posizionare un overlay semi-trasparente su questo sfondo in fase di esecuzione a seconda di una condizione. Mi piacerebbe avere una sovrapposizione rossa con il suo alfa impostato al 50%.

Ho provato a creare un file xml separato con la visualizzazione duplicata e un'immagine/sovrapposizione diversa ma è disordinato in quanto devo gonfiare tutti i pulsanti/vista testo quando utilizzo la nuova vista.

grazie matt

[edit1]

<?xml version="1.0" encoding="utf-8"?> 

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<LinearLayout android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/carefreebgscaledlighting" 
    android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> 


    <TextView 
     android:id="@+id/textviewcompanyname" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="#003F87" /> 

    <TextView 
     android:id="@+id/textViewYouAreSignedIn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:layout_alignParentTop="true" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="#003F87" 
     /> 

      <TextView 
     android:id="@+id/textViewUnsentTransactions" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:layout_below="@id/textViewYouAreSignedIn" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="#003F87" 
     /> 

[EDIT2]

<?xml version="1.0" encoding="utf-8"?> 


<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 


    <RelativeLayout 
     android:id="@+id/transparentOverlay" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="@color/red_transparent" > 


<LinearLayout android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/carefreebgscaledlighting" 
    android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> 




    <TextView 
     android:id="@+id/textviewcompanyname" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="#003F87" /> 

    <TextView 
     android:id="@+id/textViewYouAreSignedIn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:layout_alignParentTop="true" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="#003F87" 
     /> 

[edit3]

<?xml version="1.0" encoding="utf-8"?> 


<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 



<LinearLayout 
    android:id="@+id/ll1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/carefreebgscaledlighting" 
    android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> 




    <TextView 
     android:id="@+id/textviewcompanyname" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="#003F87" /> 

.

if(status.equalsIgnoreCase(IN)){ 

       youAreSignedInAt.setText("You are signed in at " + name); 
       LinearLayout layout =(LinearLayout)findViewById(R.id.ll1); 
       layout.setBackgroundResource(R.drawable.carefreebgscaledlightingred); 
      }else{ 

       youAreSignedInAt.setText("You are not signed in"); 
       LinearLayout layout =(LinearLayout)findViewById(R.id.ll1); 
       layout.setBackgroundResource(R.drawable.carefreebgscaledlighting); 
      } 
+0

Se sai quanto vuoi essere opaco, perché non un PNG? Questa sarà solo un'immagine che potrai aggiungere al layout, ogni volta che sarà necessario. – Prmths

risposta

17

Fuori della parte superiore della mia testa, si potrebbe dichiarare il colore di sfondo tra cui componente alfa in un file di risorse (cioè colors.xml)

<color name="red_transparent">#66FF0000</color> 

E poi mettere una vista (cioè RelativeLayout), in cima al resto del views.-

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <!-- All your views --> 

    <!-- Transparent layer --> 
    <RelativeLayout 
     android:id="@+id/transparentOverlay" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/red_transparent" /> 

</RelativeLayout> 

Tutto quello che dovete fare è cambiare la visibilità di R.id.transparentOverlay come volete.

+0

ciao ho pubblicato il mio xml. come puoi vedere ho un set disegnabile come sfondo. è possibile posizionare una tinta rossastra su questo drawable in fase di esecuzione. è questo che fa il tuo codice? grazie – turtleboy

+0

Se vuoi che la sovrapposizione rossa sia sopra tutto, incluso il tuo drawable, sì, questo è quello che dovrebbe fare il mio snippet. Se vuoi solo applicare un filtro rosso al tuo drawable, questa è una storia completamente diversa. – ssantos

+0

Comunque, se vuoi la sovrapposizione rossa appena sopra il drawable, puoi mettere @ + id/transparentOverlay layout appena sopra la vista se il drawable. – ssantos