2016-12-09 1 views
0

Ce code fonctionne sans erreur, mais il ne montre aucune animation dans le dialogue. Juste ajouté les 2 fichiers anim pour l'animation et ajouté dialog.getWindow(). SetWindowAnimations (R.style.DialogTheme); dans le fichier java principal. également déclaré dans le fichier styles.xml. mais aucune animation n'est affichée. Je suis nouveau sur Android.L'animation ne fonctionne pas dans le dialogue personnalisé

Activité principale

package com.dialog; 
import android.app.AlertDialog; 
import android.app.Dialog; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

//Custom Dialog 
public void open(View view) 
{ 
    final Dialog dialog= new Dialog(this); 
    dialog.setContentView(R.layout.dialog); 
    dialog.setTitle("Dialog"); 
    Button btnDismiss=(Button)dialog.findViewById(R.id.btnDismiss); 
    Button btnOkay=(Button)dialog.findViewById(R.id.btnOkay); 
    btnOkay.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(MainActivity.this,"Dialog  Successful",Toast.LENGTH_LONG).show(); 
      dialog.dismiss(); 
     } 
    }); 
    btnDismiss.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      dialog.dismiss(); 
     } 
    }); 
    dialog.getWindow().setWindowAnimations(R.style.DialogTheme); 
    dialog.show(); 
} 


public void close(View view) 
{ 
    finish(); 
} 

} 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<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" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" 
tools:context=".MainActivity"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Dialog App" 
    android:id="@+id/tvApp" 
    android:textSize="35dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" /> 


<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageView" 
    android:src="@mipmap/ic_launcher" 
    android:layout_below="@+id/tvApp" 
    android:layout_marginTop="60dp" 
    android:layout_alignRight="@+id/tvApp" 
    android:layout_alignEnd="@+id/tvApp" 
    android:layout_alignLeft="@+id/tvApp" 
    android:layout_alignStart="@+id/tvApp" /> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Dialog" 
    android:id="@+id/btnDialog" 
    android:layout_below="@+id/imageView" 
    android:layout_alignRight="@+id/tvApp" 
    android:layout_alignEnd="@+id/tvApp" 
    android:layout_marginTop="80dp" 
    android:onClick="open" 
    android:layout_alignLeft="@+id/imageView" 
    android:layout_alignStart="@+id/imageView" /> 

</RelativeLayout> 

styles.xml

<resources> 

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 
<style name="DialogTheme"> 
    <item name="android:windowEnterAnimation">@anim/slide_left</item> 
    <item name="android:windowExitAnimation">@anim/slide_right</item> 
</style> 
</resources> 

@ anim/slide_left

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromXDelta="100%p" android:toXDelta="0" 
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:duration="5000" /> 
</set> 

@ anim/slide_right

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="5000" 
    android:fromXDelta="0%p" 
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:toXDelta="-100%p" /> 
</set> 

dialog.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" android:layout_height="match_parent"> 

<TextView 
    android:text="Sure??" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="10dp" 
    android:id="@+id/tvDismiss" /> 

<Button 
    android:text="Okay" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/btnOkay" 
    android:layout_below="@id/tvDismiss" 
    android:layout_centerHorizontal="true" /> 

<Button 
    android:text="Dismiss" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/btnDismiss" 
    android:layout_below="@+id/btnOkay" 
    android:layout_alignStart="@+id/btnOkay" /> 
<Button 
    android:text="Exit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/btnExit" 
    android:layout_below="@+id/btnDismiss" 
    android:layout_alignStart="@+id/btnOkay" 
    android:onClick="close"/> 
</RelativeLayout> 
+0

J'ai aussi essayé d'utiliser dialog.getWindow(). GetAttributes(). WindowAnimations = R.style.DialogTheme mais je n'ai eu aucun résultat –

+0

J'ai aussi essayé la même chose de votre code mais ça fonctionne très bien à mes côtés. –

+0

@DeepakSachdeva Pensez-vous que cela ne fonctionne pas pour moi parce que j'utilise un émulateur pour l'exécuter ?? –

Répondre

0

Le problème est lié à la valeur de l'interpolateur. Interpolateur accelarate utilisé avec une durée 5000 qui est trop longue pour cela. Définir la valeur de la durée sur 1000 permet au code de fonctionner parfaitement!

0

Vous pouvez essayer final Dialog dialog = new Dialog(this, R.style.DialogTheme);

dialog.getWindow().setWindowAnimations(R.style.DialogTheme) est pas un travail pour dialogue, car set style est juste sur init(), mais dialog.getWindow().setWindowAnimations() est après initialisation(), donc ça ne marche pas.

Parfois, Instant Run ignorera ce changement, de sorte que vous pouvez essayer de désactiver Instant Run

dernier android jeu try: durée = 1000.

+0

votre code ne semble pas aider. –

+0

Il couvre tout l'écran maintenant. Même dans ce cas, aucune animation ne se produit –

+0

@MohitTaparia Parfois, 'Instant Run' ignorera cette modification, vous pouvez donc essayer de désactiver' Instant Run' – Yat3s

0

Je ne pense pas qu'il y ait quelque chose de mal avec votre code, le seul problème Il se peut que les animations pour les boîtes de dialogue ne soient pas activées sur votre appareil. Vérifiez si les paramètres d'animation de vos périphériques sont réglés sur "Aucune animation" (Paramètres → Affichage → Animation) alors les boîtes de dialogue n'afficheront aucune animation, vous devez activer cette option et essayer si votre code fonctionne.

+0

Il n'y a pas d'option d'animation dans les paramètres d'affichage. J'utilise un émulateur pour exécuter mon code. Est-ce que cela pourrait être le problème?? –

+0

pour certains périphériques, vous pouvez le trouver sous les options du développeur, par le nom des animations de la fenêtre ou quelque chose .. même dans les émulateurs ... vous pouvez vérifier cela http://stackoverflow.com/questions/16707137/how-to-find- et-activer-usb-debugging-mode-on-nexus-4 post pour activer les options de développement dans n'importe quel appareil, si vous ne l'avez pas fait avant –

+0

J'ai trouvé les paramètres d'animation, mais il est actif. –