vue - score android studio




Comment créer une activité transparente sur Android? (12)

Je veux créer une activité transparente en plus d'une autre activité.

Comment puis-je atteindre cet objectif?


Il y a deux façons,

  1. Utilisation de Theme.NoDisplay
  2. Utilisation de Theme.Translucent.NoTitleBar

L'utilisation de Theme.NoDisplay fonctionne toujours ... mais uniquement sur les anciens appareils Android. Sur Android 6.0 et supérieur, l'utilisation de Theme.NoDisplay sans appeler finish() dans onCreate() (or, technically, before onResume()) plantera votre application. C'est pourquoi la recommandation est d'utiliser Theme.Translucent.NoTitleBar , qui ne souffre pas de cette limitation . "


Ça va comme ça:

<activity android:name=".usual.activity.Declaration" android:theme="@android:style/Theme.Translucent.NoTitleBar" />

Ajoutez simplement la ligne suivante à la balise d'activité dans votre fichier manifeste qui doit être transparente.

android:theme="@android:style/Theme.Translucent"

Attribuez-lui le thème Translucide

android:theme="@android:style/Theme.Translucent.NoTitleBar"

Déclarez votre activité dans le manifeste comme ceci:

 <activity   
     android:name=".yourActivity"    
     android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>

Et ajoutez un fond transparent à votre mise en page.


Dans la fonction onCreate , sous setContentView , ajoutez cette ligne:

getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

J'ai juste fait deux choses, et cela a rendu mon activité transparente. Ils sont ci-dessous.

  1. Dans le fichier manifest, je viens d'ajouter le code ci-dessous dans la balise d' activité .

    android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
    
  2. Et je viens de définir l'arrière-plan de la mise en page principale pour cette activité comme " # 80000000 ". Comme

    android:background="#80000000"
    

Cela fonctionne parfaitement pour moi.


Je l'ai atteint sur 2.3.3 en ajoutant juste android:theme="@android:style/Theme.Translucent" dans la balise d'activité dans le manifeste.

Je ne connais pas les versions inférieures ...


Laissez simplement l'image d'arrière-plan de l'activité être transparente. Ou ajoutez le thème dans le fichier XML:

<activity android:name=".usual.activity.Declaration" android:theme="@android:style/Theme.Translucent.NoTitleBar" />

Le moyen le plus simple que j'ai trouvé est de définir le thème de l'activité dans AndroidManifest sur android:theme="@android:style/Theme.Holo.Dialog" .

Ensuite, dans la méthode onCreate de l'activité, appelez getWindow().setBackgroundDrawable(new ColorDrawable(0)); .


Remarque 1: Dans Drawable folder, créez test.xml et copiez le code suivant

   <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <stroke android:width="2dp" />

    <gradient
        android:angle="90"
        android:endColor="#29000000"
        android:startColor="#29000000" />

    <corners
        android:bottomLeftRadius="7dp"
        android:bottomRightRadius="7dp"
        android:topLeftRadius="7dp"
        android:topRightRadius="7dp" />

</shape>

// Note: Les coins et la forme sont selon votre condition.

// Note 2: Créer un fichier XML:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/test"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1.09"
            android:gravity="center"
         android:background="@drawable/transperent_shape"
            android:orientation="vertical" >
     </LinearLayout>
    </LinearLayout>

Ajoutez le style suivant dans votre fichier res/values/styles.xml (si vous n'en avez pas, créez-le.) Voici un fichier complet:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.Transparent" parent="android:Theme">
    <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>
</resources>

(La valeur @color/transparent est la valeur de couleur #00000000 que je mets dans le fichier res/values/color.xml Vous pouvez aussi utiliser @android:color/transparent dans les versions ultérieures d'Android.)

Appliquez ensuite le style à votre activité, par exemple:

<activity android:name=".SampleActivity" android:theme="@style/Theme.Transparent">
...
</activity>




transparent