2016-11-07 3 views
3

Ich erstelle eine Android App mit einer Zeitleiste. Ich habe eine ListView verwendet, um den Timeline-Effekt zu erstellen. Wenn ich auf ein ListViewItem klicke, benutze ich makeSceneTransitionAnimation, um die Detailansicht zu zeigen. Alles funktioniert gut, außer wenn ich in der Detailansicht bin und die Zurück-Taste drücke, die makeSceneTransitionAnimations animiert die Seite in die Zeile über der ursprünglich angeklickten Zeile und der Bildschirm blinkt danach.makeSceneTransitionAnimation Zurück Button Glitch

Dies ist der Code, den ich verwende, um die Animation zu erstellen:

View timelineObject = view.findViewById(R.id.transition); 
    timelineObject.setTransitionName("selectClientTransition"); 

    Intent intent = new Intent(this, DetailActivity.class); 

    ActivityOptionsCompat options = ActivityOptionsCompat. 
      makeSceneTransitionAnimation(this, timelineObject , "selectClientTransition"); 
    this.startActivity(intent, options.toBundle()); 

ich die Zurück-Taste in meiner ausführlichen Tätigkeit versuchte zwingende, aber ich sehe keinen Weg, um die Position des Listview-Elements als einen zu übergeben Parameter zum makeSceneTransitionAnimation.

+0

Verwenden Sie Emulator oder Handy für die App laufen – Raj

Antwort

0
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); 
     Explode explode = new Explode(); 
     getWindow().setExitTransition(explode); 
    } 
    super.onCreate(savedInstanceState);  


/*------Your code When the list item is click------*/ 
Intent intent = new Intent(context1, Main_testcollapse.class); 
       intent.putExtra("time", list.get(pos).getTime()); 
       if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { 
        ActivityOptions activityOptions = ActivityOptions.makeSceneTransitionAnimation((Activity) context1, view, "cardname"); 
        startActivity(intent, activityOptions.toBundle()); 
       } else { 
        startActivity(intent); 
       } 

Eine weitere Aktivität Innerhalb von onCreate

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     getWindow().setAllowEnterTransitionOverlap(false); 
     Slide slide=new Slide(Gravity.END); 
     getWindow().setReturnTransition(slide); 
    }