Benutzerdefinierte animation für viewpager
Arbeite ich mit viewPager und Fragmente und jetzt versuche ich, um eine benutzerdefinierte animation, die zoom-out-Seite transformation um genau zu sein.
Aber ich bin immer ein paar Fehler. Ich werde die Fehler im Kommentar, mit dem code-snippet.
Klasse MainActivity
import android.support.v4.app.FragmentManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.Menu;
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);/** Getting a reference to the ViewPager defined the layout file */
ViewPager pager = (ViewPager) findViewById(R.id.pager);
/** Getting fragment manager */
FragmentManager fm = getSupportFragmentManager();
/** Instantiating FragmentPagerAdapter */
MyFragmentPagerAdapter pagerAdapter = new MyFragmentPagerAdapter(fm);
/** Setting the pagerAdapter to the pager object */
pager.setAdapter(pagerAdapter);
//**ERROR:The method setPageTransformer(boolean, ViewPager.PageTransformer) in the type ViewPager is not applicable for the arguments (boolean, ZoomOutPageTransformer)**
pager.setPageTransformer(true, new ZoomOutPageTransformer());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Klasse ZoomOutPageTransformer
import android.view.View;
//**ERROR on 'ViewPager.PageTransformer --> ViewPager cannot be resolved to a type **
public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
private static float MIN_SCALE = 0.85f;
private static float MIN_ALPHA = 0.5f;
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
int pageHeight = view.getHeight();
if (position < -1) { //[-Infinity,-1)
//This page is way off-screen to the left.
view.setAlpha(0);
} else if (position <= 1) { //[-1,1]
//Modify the default slide transition to shrink the page as well
float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
float vertMargin = pageHeight * (1 - scaleFactor) / 2;
float horzMargin = pageWidth * (1 - scaleFactor) / 2;
if (position < 0) {
view.setTranslationX(horzMargin - vertMargin / 2);
} else {
view.setTranslationX(-horzMargin + vertMargin / 2);
}
//Scale the page down (between MIN_SCALE and 1)
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
//Fade the page relative to its size.
view.setAlpha(MIN_ALPHA +
(scaleFactor - MIN_SCALE) /
(1 - MIN_SCALE) * (1 - MIN_ALPHA));
} else { //(1,+Infinity]
//This page is way off-screen to the right.
view.setAlpha(0);
}
}
}
Haben Sie importiert die
Das code-snippet ist alles, was ich habe, ich habe auch die Tastenkombination "Strg+shift+o", um alle korrekt importiert. So ich denke ich habe alle benötigten Importe.
Haben Sie eine
Ich habe es, aber ich bin noch immer der gleiche Fehler. Habe ich auch gereinigt, das Projekt.
Ich habe es, aber es sagt, dass es nicht verwendet wird??
ViewPager.PageTransformer
Schnittstelle in der Datei, wo Sie erklären ZoomOutPageTransformer
?Das code-snippet ist alles, was ich habe, ich habe auch die Tastenkombination "Strg+shift+o", um alle korrekt importiert. So ich denke ich habe alle benötigten Importe.
Haben Sie eine
import android.support.v4.view.ViewPager.PageTransformer;
im ZoomOutPageTransformer
- Datei? Wenn nicht, sollten Sie es haben.Ich habe es, aber ich bin noch immer der gleiche Fehler. Habe ich auch gereinigt, das Projekt.
Ich habe es, aber es sagt, dass es nicht verwendet wird??
InformationsquelleAutor mXX | 2013-03-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe das problem gelöst:
Dieser arbeitete für mich, den Download der support-Bibliothek über ecplise gab mir dieser Fehler. Diese behoben das problem für mich
InformationsquelleAutor mXX
@mXX ist fast richtig. Aber für diejenigen, die, wie noch problem (wie mich), die ich brauche, um einen Punkt hinzuzufügen, um seine Vorgehensweise.
Müssen Sie aktualisieren Sie Ihre Android-Support-Library-Paket. Aber wenn Sie es jetzt müssen Sie deinstallieren Sie es zuerst installieren Sie es dann wieder in Ordnung zu bekommen neue.
Wenn Sie IntellijIdea:
installiert klicken Sie auf "Löschen 1 Paket...", um es zu löschen.
android-support-v4.jar und fügen Sie ihn in den Ordner Libs.
,, dann sollten Sie kompilieren Sie es manuell durch klicken auf
"Build/Rebuild Project"
Das ist es 😉
InformationsquelleAutor Hesam
Für jedermann immer noch nicht auf diese aktuelle support-v4-Problem nicht importieren von v4-ViewPager Benutzeroberfläche: es ist nicht erforderlich, den statischen ViewPager Instanz der Klasse. Einfach umzusetzen PageTransformer. Die PageTransformer-Schnittstelle ist bereits verpackt, die innen mit ViewPager.
view.setAlpha(0);
verursacht mir einen Fehler, nahm mich eines Tages zu erkennen. Wenn ich klickte auf den tab von Tablayout, die Seite war immer leer, oder wenn ich war ein Wischer schneller zwischen den einzelnen Seiten, einige Seiten, auf denen leer angezeigt.InformationsquelleAutor Scott Auman
Nachdem Sie update android support v4-Bibliothek, können Sie Sie löschen Sie das Projekt aus eclipse.
Und dann importieren Sie das Projekt erneut. Sauber bauen, wird alles ok sein!
InformationsquelleAutor Chuanyung Lin
Fügen Sie einfach compile 'com.android.support:support-v13:23.1.1' zu Abhängigkeiten in bauen.gradle(Screenshot)
InformationsquelleAutor Tony Baby