Wie kann ich den Effekt von Swap-Thema ändern, wie aus dem Beispiel zu sehen?Android-Set anderes Thema für zwei Fragment wie Play Store
Im Moment mit SetTheme() scheint nicht dynamisch zu arbeiten.
Wie kann ich den Effekt von Swap-Thema ändern, wie aus dem Beispiel zu sehen?Android-Set anderes Thema für zwei Fragment wie Play Store
Im Moment mit SetTheme() scheint nicht dynamisch zu arbeiten.
Ich denke, es gibt keine dynamischen Themen gibt es angewandt zu werden. Jedes Fragment innerhalb von viewpager hat seine Elemente zuvor thematisch abhängig. Wenn Sie wissen möchten, wie die Toolbar-Animation ausgeführt wird, kann ich einen Ansatz vorschlagen, der Ihnen das gleiche Ergebnis liefert.
Play Store Layout
<Toolbar>
<FrameLayout>
<RelativeLayout id="toolbarContainer">
</RelativeLayout>
<RelativeLayout id="revealContainer">
</RelativeLayout>
<TabLayout></TabLayout>
</FrameLayout>
</Toolbar>
<StoreView></StoreView><!-- This is where you see viewpager fragments -->
Der Prozess wird sein:
Der Code so etwas wie dieses
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {}
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
public void onPageSelected(int position) {
// new position of page
showRevealEffectForPage(position);
}
});
private void showRevealEffectForPage(int page) {
int color;
switch(page) {
case 0:
color = Color.parseColor("#fff"); //white
break;
default:
color = Color.parseColor("#000"); //black
break;
}
//set color before animation starts
revealContainer.setBackgroundColor(color);
int x = revealContainer.getRight();
int y = revealContainer.getBottom();
int startRadius = 0;
int endRadius = (int) Math.hypot(toolbarContainer.getWidth(), toolbarContainer.getHeight());
Animator anim = ViewAnimationUtils.createCircularReveal(revealContainer, x, y, startRadius, endRadius);
layoutButtons.setVisibility(View.VISIBLE);
// you can set animation listener here to check for when the animation ends by
anim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
//set the color of toolbarContainer
toolbarContainer.setBackgroundColor(color);
revealContainer.setVisibility(View.INVISIBLE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
anim.start();
}
Vielen Dank für Ihre Antwort – antia
@codekidX glaube ich nicht, dass es die Elemente ist einfach Thematisierung aussehen würde. Wenn es nur das wäre, würde sich die Primärfarbe nicht ändern, aber wenn du den Bildschirm "Letzte" öffnest, hat die Titelleistenfarbe des Playstores die gleiche Farbe wie der Tab, der du bist. Das kann nur bedeuten, dass sich die Grundfarbe wirklich ändert. Ich weiß nicht, wie es geht, aber ich suche auch eine Antwort –
@LuccasClezar Ich nehme setTheme (R.style.YourTheme); _ [innerhalb dessen colorPrimary anders ist] _ heißt. Dies wird wahrscheinlich eingestellt, nachdem die Registerkarte geändert wurde. – codekidX