我对Android中的动画有疑问。我已经制作了一个包含很多产品的应用程序,你现在可以通过从左到右滑动屏幕来切换产品(转到列表中的下一个产品)但是现在只需加载其他任何活动。
我想要的是很多其他应用程序也有的功能,刷卡需要让旧的活动离开屏幕,而新的活动同时进入。
我经常搜索和阅读,但我真的不知道从哪里开始。
我的产品是活动,这就是他们现在切换的方式:
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// left to right swipe
if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
for(HashMap h: products) {
if (h.get("id").toString().equals(id)) {
int index = products.indexOf(h)-1;
if (index != -1) {
HashMap product = products.get(index);
dialog = ProgressDialog.show(ProductActivity.this, "",
"Laden...", true);
Intent i = new Intent(ProductActivity.this, ProductActivity.class);
i.putExtra("id", product.get("id").toString());
i.putExtra("profileId", profileId);
i.putExtra("score", product.get("score").toString());
i.putExtra("products", products);
startActivity(i);
}
else {
Toast.makeText(ProductActivity.this, "Dit is het eerste product in de lijst.", Toast.LENGTH_LONG).show();
}
}
}
}
//right to left swipe
else if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
for(HashMap h: products) {
if (h.get("id").toString().equals(id)) {
int index = products.indexOf(h)+1;
if (index != products.size()) {
HashMap product = products.get(index);
dialog = ProgressDialog.show(ProductActivity.this, "",
"Laden...", true);
Intent i = new Intent(ProductActivity.this, ProductActivity.class);
i.putExtra("id", product.get("id").toString());
i.putExtra("profileId", profileId);
i.putExtra("score", product.get("score").toString());
i.putExtra("products", products);
startActivity(i);
}
else {
Toast.makeText(ProductActivity.this, "Dit is het laatste product in de lijst.", Toast.LENGTH_LONG).show();
}
}
}
}
} catch (Exception e) {
// nothing
}
return false;
}
答案 0 :(得分:2)
答案 1 :(得分:2)
使用overridePendingTransition,您可以覆盖活动的下一个动画。 覆盖方法startActivity并完成活动并在那里调用overridePendingTransition。
您可以在anim文件夹中将使用过的动画指定为xml文件。
对于幻灯片动画,请使用以下内容:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="-100%"
android:toXDelta="0"
android:fromYDelta="0"
android:toYDelta="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="@android:integer/config_longAnimTime" />
</set>
以及幻灯片动画:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:toXDelta="100%"
android:fromYDelta="0"
android:toYDelta="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="@android:integer/config_longAnimTime" />
</set>
根据fromXDelta和toXDelta中使用的值,您可以确定它应该滑动的方向。