Transition with nested fragment creates a noticeable lag instead of smooth transition, how to smoothen this...












0















I'm having an issue transitioning between fragment. There transition between fragment A to B is very choppy as seen in this GIF: https://imgur.com/a/PDogrxV. If you notice, when I click the fab button, the transition stops in the middle of the screen. I tried to debug it slowing down the animation and this is the result ( with sideways transition): https://imgur.com/a/1ipQvfW



I have a NavigationBar fragment which has a FrameLayout, in which I add my recyclerViewFragment (which inherits from a BaseFragment). My goal is really to smoothen the transition to have no "choppiness" between fragment A ( no paired device) to B which contains a recycler view as shown in the first GIF link,



For reference:



An example NavigationController ( which inherits from my NavBar fragment):



 public class ExampleController extends NavBarFragment {

public static ExampleController newInstance() {
ExampleController fragment = new ExampleController();
fragment.setArguments(fragment.createInitBundle());
return fragment;
}

@Override
protected BaseFragment rootFragment() {
return RecyclerViewFragment.newInstance();
}

@Override
public Bundle createInitBundle() {
return new Bundle();
}

}


The rootFrament() method is called in the initializeLayout method found in the NavBarFragment(which is called in the OnCreateView() ) -- this is just to give some context:



     @Override
protected void initializeLayout(View view) {
super.initializeLayout(view);
this.toolbar.setNavigationOnClickListener(this::navigationButtonClick);
this.toolbar.setOnMenuItemClickListener(this::navigationMenuClick);

progressBar.getLayoutParams().height = 0;
progressBar.requestLayout();

this.setContentFragment(view, this.rootFragment());
}


and the setContentFragment calls the Transaction manager:



private void setContentFragment(View view, BaseFragment frag) {
Context context = getActivity() != null ? getActivity().getApplicationContext() : null;
if (frag == null || view == null || context == null) {
return;
}

this.currentFragment = frag;

configureUIComponents(context, frag, 0);
getChildFragmentManager().beginTransaction()
.replace(view.findViewById(R.id.main_container).getId(), frag, createFragmentTag(0))
.commit();
}


An example of RecyclerViewFragment:



public class RecyclerViewFragment extends BaseRecyclerViewFragment {

public static RecyclerViewFragment newInstance(){

//navbar implement
Bundle args = new Bundle();
args.putString(NavigationBarConfig.KEY_NAV_BAR_TITLE, "Paired Devices");
args.putBoolean(NavigationBarConfig.KEY_SHOW_NAV_BAR, true);
args.putBoolean(FloatingActionButtonConfig.KEY_SHOW_FAB_BUTTON, true);
RecyclerViewFragment fragment = new RecyclerViewFragment();
fragment.setArguments(args);
return fragment;
}.


I have tried a few things: 1) I have tried using listeners for the "end" of the transition to wait to load the data. This was based on this stack overflow question: Nested fragments transitioning incorrectly. I implemented as follows ( I won't share the whole code for, well ,reasons). The method didDisappear / didAppear() is then use when I load it my model:



@Override
public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
Animator animator = null;

// Check for "Show" Transition ids
if (showTransitionAnimationIds.contains(nextAnim)) {
animator = AnimatorInflater.loadAnimator(getActivity(), nextAnim);
if (animator != null && enter) {
animator.addListener(new TransitionAnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
if (previousFragment != null) {
previousFragment.willDisappear();
}
willAppear();
}

@Override
public void onAnimationEnd(Animator animation) {
transitionDone.set(true);
if (previousFragment != null) {
previousFragment.didDisappear();
}
didAppear();
}
});
}
} else if (hideTransitionAnimationIds.contains(nextAnim)) {
animator = AnimatorInflater.loadAnimator(getActivity(), nextAnim);
if (animator != null && !enter) {
animator.addListener(new TransitionAnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
if (previousFragment != null) {
previousFragment.willAppear();
}
willDisappear();
}

@Override
public void onAnimationEnd(Animator animation) {
if (previousFragment != null) {
previousFragment.didAppear();
}
didDisappear();
}
});
}
}


I use this method for the model loading:



protected void waitForTransition() {
if (transitionDone != null) {
try {
transitionDone.get();
} catch (Exception e) {
e.printStackTrace();
}
}
}


Which usually helps me "wait" on the animation to end before I load my models. I thought this was the issue.



My goal is really to smoothen out the animation. I'm aware of the trick to "provide an image" ( to paraphrase) shown in this question: Nested fragments disappear during transition animation but I was looking for something a little bit cleaner. I was thinking a possibility could be to create two fragments on the fly? I.e: have an empty layout with 2 frameLayout in which I could just inject two fragments at run-time. Although I haven't tried that, it doesn't seem very modular.










share|improve this question

























  • I'm not clear on what your problem is. Is it the bad framerate when the second fragment transitions in? Is it the spinning loading indicator on the second fragment? Is it the fact that each item seems to appear one-by-one once the loading is complete? More detail on what exactly is going wrong (as well as what exactly you want instead) would definitely be appreciated.

    – Ben P.
    Jan 2 at 22:39











  • Ah, sorry I guess I thought I made it clear, the first link shows a choppy transition. The spinner is fine. All I really want is a smooth transition from fragment A to fragment B :)

    – MLec
    Jan 3 at 1:38
















0















I'm having an issue transitioning between fragment. There transition between fragment A to B is very choppy as seen in this GIF: https://imgur.com/a/PDogrxV. If you notice, when I click the fab button, the transition stops in the middle of the screen. I tried to debug it slowing down the animation and this is the result ( with sideways transition): https://imgur.com/a/1ipQvfW



I have a NavigationBar fragment which has a FrameLayout, in which I add my recyclerViewFragment (which inherits from a BaseFragment). My goal is really to smoothen the transition to have no "choppiness" between fragment A ( no paired device) to B which contains a recycler view as shown in the first GIF link,



For reference:



An example NavigationController ( which inherits from my NavBar fragment):



 public class ExampleController extends NavBarFragment {

public static ExampleController newInstance() {
ExampleController fragment = new ExampleController();
fragment.setArguments(fragment.createInitBundle());
return fragment;
}

@Override
protected BaseFragment rootFragment() {
return RecyclerViewFragment.newInstance();
}

@Override
public Bundle createInitBundle() {
return new Bundle();
}

}


The rootFrament() method is called in the initializeLayout method found in the NavBarFragment(which is called in the OnCreateView() ) -- this is just to give some context:



     @Override
protected void initializeLayout(View view) {
super.initializeLayout(view);
this.toolbar.setNavigationOnClickListener(this::navigationButtonClick);
this.toolbar.setOnMenuItemClickListener(this::navigationMenuClick);

progressBar.getLayoutParams().height = 0;
progressBar.requestLayout();

this.setContentFragment(view, this.rootFragment());
}


and the setContentFragment calls the Transaction manager:



private void setContentFragment(View view, BaseFragment frag) {
Context context = getActivity() != null ? getActivity().getApplicationContext() : null;
if (frag == null || view == null || context == null) {
return;
}

this.currentFragment = frag;

configureUIComponents(context, frag, 0);
getChildFragmentManager().beginTransaction()
.replace(view.findViewById(R.id.main_container).getId(), frag, createFragmentTag(0))
.commit();
}


An example of RecyclerViewFragment:



public class RecyclerViewFragment extends BaseRecyclerViewFragment {

public static RecyclerViewFragment newInstance(){

//navbar implement
Bundle args = new Bundle();
args.putString(NavigationBarConfig.KEY_NAV_BAR_TITLE, "Paired Devices");
args.putBoolean(NavigationBarConfig.KEY_SHOW_NAV_BAR, true);
args.putBoolean(FloatingActionButtonConfig.KEY_SHOW_FAB_BUTTON, true);
RecyclerViewFragment fragment = new RecyclerViewFragment();
fragment.setArguments(args);
return fragment;
}.


I have tried a few things: 1) I have tried using listeners for the "end" of the transition to wait to load the data. This was based on this stack overflow question: Nested fragments transitioning incorrectly. I implemented as follows ( I won't share the whole code for, well ,reasons). The method didDisappear / didAppear() is then use when I load it my model:



@Override
public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
Animator animator = null;

// Check for "Show" Transition ids
if (showTransitionAnimationIds.contains(nextAnim)) {
animator = AnimatorInflater.loadAnimator(getActivity(), nextAnim);
if (animator != null && enter) {
animator.addListener(new TransitionAnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
if (previousFragment != null) {
previousFragment.willDisappear();
}
willAppear();
}

@Override
public void onAnimationEnd(Animator animation) {
transitionDone.set(true);
if (previousFragment != null) {
previousFragment.didDisappear();
}
didAppear();
}
});
}
} else if (hideTransitionAnimationIds.contains(nextAnim)) {
animator = AnimatorInflater.loadAnimator(getActivity(), nextAnim);
if (animator != null && !enter) {
animator.addListener(new TransitionAnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
if (previousFragment != null) {
previousFragment.willAppear();
}
willDisappear();
}

@Override
public void onAnimationEnd(Animator animation) {
if (previousFragment != null) {
previousFragment.didAppear();
}
didDisappear();
}
});
}
}


I use this method for the model loading:



protected void waitForTransition() {
if (transitionDone != null) {
try {
transitionDone.get();
} catch (Exception e) {
e.printStackTrace();
}
}
}


Which usually helps me "wait" on the animation to end before I load my models. I thought this was the issue.



My goal is really to smoothen out the animation. I'm aware of the trick to "provide an image" ( to paraphrase) shown in this question: Nested fragments disappear during transition animation but I was looking for something a little bit cleaner. I was thinking a possibility could be to create two fragments on the fly? I.e: have an empty layout with 2 frameLayout in which I could just inject two fragments at run-time. Although I haven't tried that, it doesn't seem very modular.










share|improve this question

























  • I'm not clear on what your problem is. Is it the bad framerate when the second fragment transitions in? Is it the spinning loading indicator on the second fragment? Is it the fact that each item seems to appear one-by-one once the loading is complete? More detail on what exactly is going wrong (as well as what exactly you want instead) would definitely be appreciated.

    – Ben P.
    Jan 2 at 22:39











  • Ah, sorry I guess I thought I made it clear, the first link shows a choppy transition. The spinner is fine. All I really want is a smooth transition from fragment A to fragment B :)

    – MLec
    Jan 3 at 1:38














0












0








0








I'm having an issue transitioning between fragment. There transition between fragment A to B is very choppy as seen in this GIF: https://imgur.com/a/PDogrxV. If you notice, when I click the fab button, the transition stops in the middle of the screen. I tried to debug it slowing down the animation and this is the result ( with sideways transition): https://imgur.com/a/1ipQvfW



I have a NavigationBar fragment which has a FrameLayout, in which I add my recyclerViewFragment (which inherits from a BaseFragment). My goal is really to smoothen the transition to have no "choppiness" between fragment A ( no paired device) to B which contains a recycler view as shown in the first GIF link,



For reference:



An example NavigationController ( which inherits from my NavBar fragment):



 public class ExampleController extends NavBarFragment {

public static ExampleController newInstance() {
ExampleController fragment = new ExampleController();
fragment.setArguments(fragment.createInitBundle());
return fragment;
}

@Override
protected BaseFragment rootFragment() {
return RecyclerViewFragment.newInstance();
}

@Override
public Bundle createInitBundle() {
return new Bundle();
}

}


The rootFrament() method is called in the initializeLayout method found in the NavBarFragment(which is called in the OnCreateView() ) -- this is just to give some context:



     @Override
protected void initializeLayout(View view) {
super.initializeLayout(view);
this.toolbar.setNavigationOnClickListener(this::navigationButtonClick);
this.toolbar.setOnMenuItemClickListener(this::navigationMenuClick);

progressBar.getLayoutParams().height = 0;
progressBar.requestLayout();

this.setContentFragment(view, this.rootFragment());
}


and the setContentFragment calls the Transaction manager:



private void setContentFragment(View view, BaseFragment frag) {
Context context = getActivity() != null ? getActivity().getApplicationContext() : null;
if (frag == null || view == null || context == null) {
return;
}

this.currentFragment = frag;

configureUIComponents(context, frag, 0);
getChildFragmentManager().beginTransaction()
.replace(view.findViewById(R.id.main_container).getId(), frag, createFragmentTag(0))
.commit();
}


An example of RecyclerViewFragment:



public class RecyclerViewFragment extends BaseRecyclerViewFragment {

public static RecyclerViewFragment newInstance(){

//navbar implement
Bundle args = new Bundle();
args.putString(NavigationBarConfig.KEY_NAV_BAR_TITLE, "Paired Devices");
args.putBoolean(NavigationBarConfig.KEY_SHOW_NAV_BAR, true);
args.putBoolean(FloatingActionButtonConfig.KEY_SHOW_FAB_BUTTON, true);
RecyclerViewFragment fragment = new RecyclerViewFragment();
fragment.setArguments(args);
return fragment;
}.


I have tried a few things: 1) I have tried using listeners for the "end" of the transition to wait to load the data. This was based on this stack overflow question: Nested fragments transitioning incorrectly. I implemented as follows ( I won't share the whole code for, well ,reasons). The method didDisappear / didAppear() is then use when I load it my model:



@Override
public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
Animator animator = null;

// Check for "Show" Transition ids
if (showTransitionAnimationIds.contains(nextAnim)) {
animator = AnimatorInflater.loadAnimator(getActivity(), nextAnim);
if (animator != null && enter) {
animator.addListener(new TransitionAnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
if (previousFragment != null) {
previousFragment.willDisappear();
}
willAppear();
}

@Override
public void onAnimationEnd(Animator animation) {
transitionDone.set(true);
if (previousFragment != null) {
previousFragment.didDisappear();
}
didAppear();
}
});
}
} else if (hideTransitionAnimationIds.contains(nextAnim)) {
animator = AnimatorInflater.loadAnimator(getActivity(), nextAnim);
if (animator != null && !enter) {
animator.addListener(new TransitionAnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
if (previousFragment != null) {
previousFragment.willAppear();
}
willDisappear();
}

@Override
public void onAnimationEnd(Animator animation) {
if (previousFragment != null) {
previousFragment.didAppear();
}
didDisappear();
}
});
}
}


I use this method for the model loading:



protected void waitForTransition() {
if (transitionDone != null) {
try {
transitionDone.get();
} catch (Exception e) {
e.printStackTrace();
}
}
}


Which usually helps me "wait" on the animation to end before I load my models. I thought this was the issue.



My goal is really to smoothen out the animation. I'm aware of the trick to "provide an image" ( to paraphrase) shown in this question: Nested fragments disappear during transition animation but I was looking for something a little bit cleaner. I was thinking a possibility could be to create two fragments on the fly? I.e: have an empty layout with 2 frameLayout in which I could just inject two fragments at run-time. Although I haven't tried that, it doesn't seem very modular.










share|improve this question
















I'm having an issue transitioning between fragment. There transition between fragment A to B is very choppy as seen in this GIF: https://imgur.com/a/PDogrxV. If you notice, when I click the fab button, the transition stops in the middle of the screen. I tried to debug it slowing down the animation and this is the result ( with sideways transition): https://imgur.com/a/1ipQvfW



I have a NavigationBar fragment which has a FrameLayout, in which I add my recyclerViewFragment (which inherits from a BaseFragment). My goal is really to smoothen the transition to have no "choppiness" between fragment A ( no paired device) to B which contains a recycler view as shown in the first GIF link,



For reference:



An example NavigationController ( which inherits from my NavBar fragment):



 public class ExampleController extends NavBarFragment {

public static ExampleController newInstance() {
ExampleController fragment = new ExampleController();
fragment.setArguments(fragment.createInitBundle());
return fragment;
}

@Override
protected BaseFragment rootFragment() {
return RecyclerViewFragment.newInstance();
}

@Override
public Bundle createInitBundle() {
return new Bundle();
}

}


The rootFrament() method is called in the initializeLayout method found in the NavBarFragment(which is called in the OnCreateView() ) -- this is just to give some context:



     @Override
protected void initializeLayout(View view) {
super.initializeLayout(view);
this.toolbar.setNavigationOnClickListener(this::navigationButtonClick);
this.toolbar.setOnMenuItemClickListener(this::navigationMenuClick);

progressBar.getLayoutParams().height = 0;
progressBar.requestLayout();

this.setContentFragment(view, this.rootFragment());
}


and the setContentFragment calls the Transaction manager:



private void setContentFragment(View view, BaseFragment frag) {
Context context = getActivity() != null ? getActivity().getApplicationContext() : null;
if (frag == null || view == null || context == null) {
return;
}

this.currentFragment = frag;

configureUIComponents(context, frag, 0);
getChildFragmentManager().beginTransaction()
.replace(view.findViewById(R.id.main_container).getId(), frag, createFragmentTag(0))
.commit();
}


An example of RecyclerViewFragment:



public class RecyclerViewFragment extends BaseRecyclerViewFragment {

public static RecyclerViewFragment newInstance(){

//navbar implement
Bundle args = new Bundle();
args.putString(NavigationBarConfig.KEY_NAV_BAR_TITLE, "Paired Devices");
args.putBoolean(NavigationBarConfig.KEY_SHOW_NAV_BAR, true);
args.putBoolean(FloatingActionButtonConfig.KEY_SHOW_FAB_BUTTON, true);
RecyclerViewFragment fragment = new RecyclerViewFragment();
fragment.setArguments(args);
return fragment;
}.


I have tried a few things: 1) I have tried using listeners for the "end" of the transition to wait to load the data. This was based on this stack overflow question: Nested fragments transitioning incorrectly. I implemented as follows ( I won't share the whole code for, well ,reasons). The method didDisappear / didAppear() is then use when I load it my model:



@Override
public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
Animator animator = null;

// Check for "Show" Transition ids
if (showTransitionAnimationIds.contains(nextAnim)) {
animator = AnimatorInflater.loadAnimator(getActivity(), nextAnim);
if (animator != null && enter) {
animator.addListener(new TransitionAnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
if (previousFragment != null) {
previousFragment.willDisappear();
}
willAppear();
}

@Override
public void onAnimationEnd(Animator animation) {
transitionDone.set(true);
if (previousFragment != null) {
previousFragment.didDisappear();
}
didAppear();
}
});
}
} else if (hideTransitionAnimationIds.contains(nextAnim)) {
animator = AnimatorInflater.loadAnimator(getActivity(), nextAnim);
if (animator != null && !enter) {
animator.addListener(new TransitionAnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
if (previousFragment != null) {
previousFragment.willAppear();
}
willDisappear();
}

@Override
public void onAnimationEnd(Animator animation) {
if (previousFragment != null) {
previousFragment.didAppear();
}
didDisappear();
}
});
}
}


I use this method for the model loading:



protected void waitForTransition() {
if (transitionDone != null) {
try {
transitionDone.get();
} catch (Exception e) {
e.printStackTrace();
}
}
}


Which usually helps me "wait" on the animation to end before I load my models. I thought this was the issue.



My goal is really to smoothen out the animation. I'm aware of the trick to "provide an image" ( to paraphrase) shown in this question: Nested fragments disappear during transition animation but I was looking for something a little bit cleaner. I was thinking a possibility could be to create two fragments on the fly? I.e: have an empty layout with 2 frameLayout in which I could just inject two fragments at run-time. Although I haven't tried that, it doesn't seem very modular.







java android android-fragments android-transitions






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 3 at 1:41







MLec

















asked Jan 2 at 21:14









MLecMLec

28110




28110













  • I'm not clear on what your problem is. Is it the bad framerate when the second fragment transitions in? Is it the spinning loading indicator on the second fragment? Is it the fact that each item seems to appear one-by-one once the loading is complete? More detail on what exactly is going wrong (as well as what exactly you want instead) would definitely be appreciated.

    – Ben P.
    Jan 2 at 22:39











  • Ah, sorry I guess I thought I made it clear, the first link shows a choppy transition. The spinner is fine. All I really want is a smooth transition from fragment A to fragment B :)

    – MLec
    Jan 3 at 1:38



















  • I'm not clear on what your problem is. Is it the bad framerate when the second fragment transitions in? Is it the spinning loading indicator on the second fragment? Is it the fact that each item seems to appear one-by-one once the loading is complete? More detail on what exactly is going wrong (as well as what exactly you want instead) would definitely be appreciated.

    – Ben P.
    Jan 2 at 22:39











  • Ah, sorry I guess I thought I made it clear, the first link shows a choppy transition. The spinner is fine. All I really want is a smooth transition from fragment A to fragment B :)

    – MLec
    Jan 3 at 1:38

















I'm not clear on what your problem is. Is it the bad framerate when the second fragment transitions in? Is it the spinning loading indicator on the second fragment? Is it the fact that each item seems to appear one-by-one once the loading is complete? More detail on what exactly is going wrong (as well as what exactly you want instead) would definitely be appreciated.

– Ben P.
Jan 2 at 22:39





I'm not clear on what your problem is. Is it the bad framerate when the second fragment transitions in? Is it the spinning loading indicator on the second fragment? Is it the fact that each item seems to appear one-by-one once the loading is complete? More detail on what exactly is going wrong (as well as what exactly you want instead) would definitely be appreciated.

– Ben P.
Jan 2 at 22:39













Ah, sorry I guess I thought I made it clear, the first link shows a choppy transition. The spinner is fine. All I really want is a smooth transition from fragment A to fragment B :)

– MLec
Jan 3 at 1:38





Ah, sorry I guess I thought I made it clear, the first link shows a choppy transition. The spinner is fine. All I really want is a smooth transition from fragment A to fragment B :)

– MLec
Jan 3 at 1:38












0






active

oldest

votes












Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54013283%2ftransition-with-nested-fragment-creates-a-noticeable-lag-instead-of-smooth-trans%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54013283%2ftransition-with-nested-fragment-creates-a-noticeable-lag-instead-of-smooth-trans%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

MongoDB - Not Authorized To Execute Command

How to fix TextFormField cause rebuild widget in Flutter

Npm cannot find a required file even through it is in the searched directory