2017-10-03 5 views
0

J'ai un fragment avec une forme. L'un des contrôles est un bouton. Donc, quand je clique sur le bouton, je veux qu'une vue personnalisée glisse de droite comme une boîte de dialogue. La vue peut avoir une largeur personnalisée et une hauteur personnalisée. Je veux que la mise en page soit positionnée au centre. Donc, quoi que je fasse sur la vue, je veux que la valeur passe au fragment parent. Comment puis-je faire ceci? Dois-je utiliser un fragment ou un dialogue.Comment afficher une mise en page personnalisée qui glisse à partir de la droite et prendre l'entrée de l'utilisateur dans Android?

J'apprécierais que quelqu'un puisse me montrer la structure de base du code.

Voilà comment je l'ai fait l'appel:

button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      LinearLayout box = (LinearLayout)view.findViewById(R.id.box_container); 
      Animation errorSlide = AnimationUtils.loadAnimation(getActivity(),R.anim.box_anim); 
      box.startAnimation(errorSlide); 

     } 
    }); 

Répondre

0

Vous pouvez utiliser l'animation de diapositives pour cela. par souci d'aide, j'ajoute un petit morceau de code. Vous pouvez ensuite modifier selon vos besoins.

Ci-dessous l'animation qui sera nécessaire. Créez un dossier anim à l'intérieur de res et créez une animation d'animation à l'intérieur du dossier et donnez-lui un nom approprié.

<?xml version="1.0" encoding="utf-8"?> 
<set 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/linear_interpolator" 
android:fillAfter="true"> 

<translate 
    android:fromXDelta="0%p" 
    android:toXDelta="75%p" 
    android:duration="800" /> 
</set> 

Créer un xml de mise en page comme mentionné ci-dessous

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.awaheed.testingproject.MainActivity"> 

<View 
    android:background="@color/colorAccent" 
    android:id="@+id/slidder" 
    android:layout_width="50dp" 
    android:layout_height="match_parent" 
    /> 

<Button 
    android:layout_alignParentBottom="true" 
    android:text="Slide view" 
    android:id="@+id/btn_slide" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

</RelativeLayout> 

Et ci-dessous utiliser le code d'activité

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

    final View slideView = findViewById(R.id.slidder); 


    findViewById(R.id.btn_slide).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Animation animSlide = AnimationUtils.loadAnimation(getApplicationContext(), 
        R.anim.slide); 


      slideView.startAnimation(animSlide); 
     } 
    }); 
} 

Espoir qui vous aide.

+0

Ok, j'ai fait ce que vous avez dit. Sauf à la place de votre objet de vue, j'ai créé un autre fichier de disposition .xml avec une disposition linéaire et j'ai essayé d'appeler cette mise en page. J'ai reçu une exception NullPointerException. Une idée?? – vinitpradhan18

+0

lorsqu 'obtenir l'exception de pointeur null? Pouvez-vous s'il vous plaît poster le code que vous avez essayé? –

+0

J'ai ajouté le code dans la question. J'ai essayé votre code et cela a fonctionné. Ce que je veux faire, c'est que j'ai déjà un fragment avec son fichier de mise en page. J'essaie d'appeler un autre fichier de disposition sur le fragment avec ses propres ensembles de vues. Comment puis je faire ça? Je veux superposer cette vue au-dessus de ma vue fragmentée. votre vue glisse aussi de gauche à droite. Je veux que ma vue glisse de droite à gauche (un peu comme une disposition de tiroir) – vinitpradhan18