2016-03-27 11 views
-1

Ich versuche Instagram auf Long-Klick-Funktion in meiner Anwendung zu imitieren. Ich habe eine Listenansicht und wenn der Benutzer auf ein Element klickt, öffnet es eine Detailaktivität.Lange klicken, um den Inhalt einer anderen Aktivität in der gleichen Aktivität anzuzeigen

was ich versuche zu tun ist, um die Details für den Benutzer anzuzeigen, wenn lange drücken Sie ein Element ohne zu den Details Aktivität zu bewegen, muss ich es in der Mitte des Bildschirms in der gleichen Aktivität anzeigen (wie Wenn Sie lange auf ein Bild in Instagram drücken) und verschwindet, wenn der Benutzer die Berührung loslässt.

Ich habe müde folgendes:

view.setOnLongClickListener(new View.OnLongClickListener() { 
        @Override 
        public boolean onLongClick(View v) { 
         Log.d("LongClick", "Long click"); 
         Intent in = new Intent(AppointmentsActivity.this,AppointmentsDetailsActivity.class); 
         startActivity(in); 
         return true; 
        } 
       }); 
       view.setOnTouchListener(new View.OnTouchListener() { 
        @Override 
        public boolean onTouch(View v, MotionEvent event) { 
         if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) { 
          Log.d("TouchTest", "Touch down"); 
         } else if (event.getAction() == android.view.MotionEvent.ACTION_UP) { 
          Log.d("TouchTest", "Touch up"); 

         } 
         return false; 
        } 
       }); 

Antwort

0

Dazu öffnen Sie einfach eine andere Tätigkeit onLongPress als Dialog Aktivität .So Inhalt der Detailaktivität wird in der aktuellen Aktivität angezeigt. Um die Aktivität als Dialog Aktivität zu öffnen, benötigen Sie Aktivität Thema als Dialog Thema < Aktivität android setzen: theme = "@ android: style/Theme.Dialog" />

0

für diese Sie brauchen keine neue Aktivität zu starten. Sie müssen nur Daten (Präferenzen oder eine Klasse mit Variable) haben. Dann können Sie das mit einer einfachen Dialogbox oder mit einem Fragment tun. Weil du zwischenzeitlich 2 Aktivitäten nicht ausführen kannst. Und wenn Sie die Detail-Aktivität für Memories-Relationen starten möchten, wird Ihre Startaktivität möglicherweise abgebrochen und befindet sich nicht im Backstack.

+0

Wie kann ich erreichen, dass mit dem Fragment? – Luji

0

als user2043602 sagte, Sie brauchen keine neue Aktivität zu beginnen.,

Nach mir die beste Alternative ist ViewAnimator mit zwei Layouts zu verwenden, und dynamisch ein Fragment mit dem zweiten Layout hinzufügen [das ist nicht sichtbar, bis Sie in ViewAnimator zur nächsten Ansicht wechseln].

Fragment zur Laufzeit hinzufügen, können Sie die folgende verwenden:

FragmentTransaction transaction; 
transaction = getFragmentManager().beginTransaction(); 
page_1 newFragment1 = page_1.newInstance("one", "two");//here page_1 is my fragment..which you can easily do by adding a new default blank fragment in android studio 
transaction.add(R.id.holder, newFragment1);//R.id.holder is the layout id under whihc you wish to add the fragment.. 

Sie ViewAnimator wie diese können Sie:

ViewAnimator viewAnimator; 
viewAnimator = (ViewAnimator)findViewById(R.id.group1);//R.id.group1 is the view animator id 
viewAnimator.setInAnimation(AnimationUtils.loadAnimation(page2.this, R.anim.first_try));   viewAnimator.setOutAnimation(AnimationUtils.loadAnimation(page2.this, android.R.anim.slide_out_right)); 

      viewAnimator.showNext(); 
Verwandte Themen