2013-08-19 13 views
5

Ich bin dort blockiert. Ich versuche eine transparente Ansicht über einen Hintergrund zu legen. Ich habe mehrere Methoden ausprobiert.Transparente Sicht über ImageView

Throught XML mit:

android:background="@color/transparent" 

oder

android:color="#80000000" 

oder einen Verweis setzen Datei color.xml als so

<resources> 
    <color name="transp">#80000000</color> 
</resources> 

mit meinem layout.xml wie diese

android:background="@color/transp" 

Ich habe auch versucht, es durch generierten Code zu tun

myView.getBackground().setAlpha(45); 

oder

myViewm.setBackgroundResource(R.color.trans); 

ich einige Beiträge gesehen habe verwandt, aber keine der Antworten gearbeitet.

Außerdem ist noch seltsam, dass alle diese Lösungen scheinen auf dem GraphicalLayout in Eclipse gut zu funktionieren. Aber wenn ich mein Gerät starte, bleibt der Bildschirm nicht transparent. Ich habe eine Linie in dieser Ansicht gezeichnet, um sicherzustellen, dass etwas passiert; und die Linie zeigt.

hier ist mein layout.xml

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

     <ImageView 
     android:id="@+id/backgroundview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:src="@drawable/space_bg" 
     android:contentDescription="@string/desc" /> 

     <View 
     android:id="@+id/tileview"   
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"/><!-- 
     android:background="@color/transp"/>--> 

</RelativeLayout> 

und meinen Code

private ImageView bg; 
    MyView tV; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     tV = new MyView(this); 

setContentView(tV); 

}

und die myView OnDraw

@Override 
    protected void onDraw(Canvas canvas)  
    { 

     super.onDraw(canvas); 
     this.setBackgroundResource(R.color.transp); 
     canvas.drawLine(10,20,30,40, paint); 

    } 

Also, wo bin ich falsch? Danke !!!

Antwort

9
android:background="@color/transparent" 

können Sie die in Android-Ressourcen zur Verfügung gestellt transparent Farbe verwenden:

android:background="@android:color/transparent" 

android:color="#80000000" 

<resources> 
    <color name="transp">#80000000</color> 
</resources> 

myViewm.setBackgroundResource(R.color.trans); 

Dieses Sie einen sehr dunklen Grauton geben. Der Alpha-Wert von 80 ist bestenfalls durchscheinend.


myView.getBackground().setAlpha(45); 

Sie können dies nicht richtig werden.


private ImageView bg; 
MyView tV; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    tV = new MyView(this); 

    setContentView(tV); 
} 

ersetzt diese grundsätzlich die View aus R.layout.activity_main aufgeblasen mit MyView (die die Image und andere Widgets enthalten). Ich glaube nicht, dass dies genau das ist, was Sie wollen. Versuchen Sie Folgendes:

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

    <ImageView 
     android:id="@+id/backgroundview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:src="@drawable/space_bg" 
     android:contentDescription="@string/desc" /> 

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

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/some_drawable_smaller_than_screen_size" 
      android:layout_centerInParent="true" /> 

    </RelativeLayout> 

</RelativeLayout> 

Wie diese xml aufzublasen:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    setContentView(R.layout.activity_main); 
} 

id="@+id/tileview" wird transparent und über id="@+id/backgroundview".

+2

Man ... du bist ein großzügiger Genie !!!! ... Dieses f *** g funktioniert! Mein Fehler war, dass ich einen Blick auf ein imageView werfen wollte? Warum hat es nicht funktioniert? Und wenn ich jetzt ein paar Zeilen über diese Ansicht zeichnen wollte, könnte ich das mit Code machen? – Antoine

+0

@Antoine Froh, dass es geklappt hat. »Und wenn ich jetzt ein paar Zeilen über diese Ansicht zeichnen wollte, könnte ich das mit Code machen?« »Sie müssen genauer sein. Möchten Sie einige Linien zeichnen, die über die ImageView vordefiniert sind (dh sie erscheinen, wenn die Aktivität startet)? Oder möchtest du Freestyle (mit Berührungsereignissen) zeichnen, wenn deine App läuft? – Vikram

+1

Entschuldigung, um vage zu sein ... Ich möchte einige Linien angezeigt werden, sobald die Aktivität beginnt, Kacheln tatsächlich mit einigen Ereignissen Listener. Und jede Erklärung, warum meine eigene Lösung nicht funktioniert hat? – Antoine

Verwandte Themen