私のシナリオは次のとおりです。Androidでトランジション付きのDialogFragmentを起動するには?
Activity
MainActivity
は、FAB
です。ユーザーがFAB
をクリックすると、フルスクリーンDialogFragment
が開きます。いくつかのトランジションでDialogFragment
を開きたいと思います。
ここまで私が試したコードです。
//MainActivity.java
final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ReviewDialog reviewDialog = ReviewDialog.newInstance();
Slide slide = new Slide();
slide.setSlideEdge(Gravity.LEFT);
slide.setDuration(1000);
reviewDialog.setEnterTransition(slide);
Bundle bundle =ActivityOptions.makeSceneTransitionAnimation(ScrollingActivity.this)
.toBundle();
reviewDialog.setArguments(bundle);
reviewDialog.show(getSupportFragmentManager(),"review");
}
});
次に、DialogFragment ReviewDialogのコードを示します。
//ReviewDialog.java
public class ReviewDialog extends DialogFragment {
static ReviewDialog newInstance() {
ReviewDialog f = new ReviewDialog();
// Supply num input as an argument.
Bundle args = new Bundle();
f.setArguments(args);
return f;
}
@Override
public void onActivityCreated(Bundle arg0) {
super.onActivityCreated(arg0);
Slide slide = new Slide();
slide.setSlideEdge(Gravity.LEFT);
slide.setDuration(1000);
getDialog().getWindow().setEnterTransition(slide);
getDialog().getWindow().setExitTransition(slide);
getDialog().getWindow().setReenterTransition(slide);}
@Override
public void onCreate(Bundle bundle){
super.onCreate(bundle);
setStyle(DialogFragment.STYLE_NORMAL,R.style.DialogTheme);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.dialog_review, container, false);
return v;
}
}
はまた、私はこの問題は、ReviewDialogが開始されたとき、それは任意の遷移を示していないで、私のAndroidManifest.xml
<item name="android:windowContentTransitions">true</item>
で次のプロパティを設定しました。 私はさまざまなアクティビティ間でトランジションを表示できますが、アクティビティとフラグメント間のトランジションを表示することは非常に困難です。 DialogFragmentの開始時にトランジションを表示する方法は?
このHTTPを参照してください。 //stackoverflow.com/questions/13402782/show-dialogfragment-with-animation-growing-from-a-point – Ironman
@アイロン回答:リンクに記載されている質問は2012年に戻ってきましたが、回答のほとんどは2013年です。明らかに、すべての回答はロリポップの移行が発表される前に書かれていました。私はロリポップで提供される移行の助けを借りてこれを達成したいと思います。 – thedarkpassenger
これを参照してください:http://stackoverflow.com/a/13537234/4628611 – Mehta