0

ビデオ再生プロジェクトにDraggable panel libraryを統合しようとしています。シーントランジションはすべてを削除します

まず、DraggablePanelが常にルートビューにあるように設定して、最大化すると画面全体を覆うようにします。

しかし、私はYouTubeのように、サムネイルからビデオウィンドウにうまく移行したいと思っています。私はこれを試しました:

public static void launch(TransitionableClass t, 
          AppCompatActivity activity, 
          Fragment bottomFragment, 
          ViewGroup container, 
          View iv, 
          String transitionName, 
          String url) { 
    DraggableVideoPanel draggableVideoPanel = new DraggableVideoPanel(activity.getApplicationContext()); 
    draggableVideoPanel.setFragmentManager(activity.getSupportFragmentManager()); 
    draggableVideoPanel.setBottomFragment(bottomFragment); 

    TypedValue typedValue = new TypedValue(); 
    activity.getResources().getValue(R.dimen.x_scale_factor, typedValue, true); 
    float xScaleFactor = typedValue.getFloat(); 
    typedValue = new TypedValue(); 
    activity.getResources().getValue(R.dimen.y_scale_factor, typedValue, true); 
    float yScaleFactor = typedValue.getFloat(); 



    draggableVideoPanel.setXScaleFactor(xScaleFactor); 
    draggableVideoPanel.setYScaleFactor(yScaleFactor); 
    draggableVideoPanel.setTopViewHeight(
      activity.getResources().getDimensionPixelSize(R.dimen.top_fragment_height)); 
    draggableVideoPanel.setTopFragmentMarginRight(
      activity.getResources().getDimensionPixelSize(R.dimen.top_fragment_margin)); 
    draggableVideoPanel.setTopFragmentMarginBottom(
      activity.getResources().getDimensionPixelSize(R.dimen.top_fragment_margin)); 


    draggableVideoPanel.initializeView(); 
    draggableVideoPanel.maximize(); 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     iv.setTransitionName(transitionName); 
     draggableVideoPanel.mCoverView.setTransitionName(transitionName); 


     Transition shared = t.inflateTransition(android.R.transition.move); 
     shared.addTarget(transitionName); 
     shared.setDuration(200); 

     Transition fade = t.inflateTransition(android.R.transition.fade); 
     fade.excludeTarget(transitionName, true); 
     fade.setDuration(200); 

     TransitionSet transitionSet = new TransitionSet(); 

     transitionSet.addTransition(fade).addTransition(shared); 

     Scene scene = new Scene(container, draggableVideoPanel); 
     draggableVideoPanel.mCoverView.setImageResource(R.drawable.img); 

     TransitionManager.go(scene, transitionSet); 
    } 

} 

私は2つの共有ビューから移動遷移を作成し、残りのフェードを作成します。何とか遷移が作成したようなので、それが見えます

http://i.imgur.com/2aPxDJX.mp4

:コードのこの作品は、私はDraggablePanelがうまく動作するために使用されるが、今のトランジションを使用して、私はこれを得たトランジションwhithout今here

から取りました白い背景。レイアウトインスペクタを使用して、実際にはウィンドウからのすべての要素が、トランジションを適用する際にシーンから実際に削除されていることがわかりました。

どうすればこの問題を防ぐことができますか?私のアプリでビュー間を遷移させるにはどうすればいいですか?

答えて

0
Scene scene = new Scene(container, draggableVideoPanel); 

あなたはこのコンストラクタを使用している:Scene (ViewGroup sceneRoot, View layout):入力されたとき、がsceneRootコンテナからすべての子を削除し、その新しい子としてレイアウトオブジェクトを追加し、シーンを構築し

コンテナ。

draggableVideoPanelを除くcontainerのすべてを除去する際に、このScene結果は、ドキュメントに記載されているように。

希望するものはTransitionManager.beginDelayedTransition(ViewGroup sceneRoot, Transition transition)です。

+0

これで共有要素を移行することはできますか?ちょうど試みたが、うまくいかなかった –

+0

はい、できます。コードでは、 'TransitionManager.beginDelayedTransition(viewGroup、transition);を実行し、この行の下で、再配置するレイアウトの変更を実行します。 'draggableVideoPanel.setX(0);' 'Transitions API'はデルタを数え、' transition'を適用します。 'draggableVideoPanel'は' viewGroup'の子でなければなりません。 – azizbekian

+0

あなたは正常ですが何らかの理由で移行が予期したとおりに機能していませんhttps://www.youtube.com/watch?v=vM__d-4xFv8&feature=youtu.be –

関連する問題