我在android中尝试动画。我想只旋转图像视图而不会打扰它下面的水平滚动视图。此外,当动画完成时,我想开始一个新的活动。我不想使用片段,因为我想在翻转完成时开始新的活动。因为,现在应用程序正常工作,但它不平滑,水平滚动视图也旋转。此外,它似乎不是旋转。当我将alpha属性放在rotate_in.xml中时,它会给出一个错误:“子元素必须格式良好”请帮助。 以下是源代码:
布局1:
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.fromscratch.MainActivity" >
<ImageView
android:layout_width="250dp"
android:layout_height="250dp"
android:src="@drawable/you"
android:id="@+id/you" >
</ImageView>
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="10dp">
<ImageButton
android:id="@+id/date"
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_marginTop="26dp"
android:scaleType="fitXY"
android:src="@drawable/date" />
<ImageButton
android:id="@+id/mission"
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_marginTop="26dp"
android:scaleType="fitXY"
android:src="@drawable/mission" />
<ImageButton
android:id="@+id/youu"
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_marginTop="26dp"
android:scaleType="fitXY"
android:src="@drawable/you" />
<ImageButton
android:id="@+id/competitionn"
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_marginTop="26dp"
android:scaleType="fitXY"
android:src="@drawable/competition" />
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
布局2:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.fromscratch.MainActivity"
android:orientation="vertical">
<ImageView
android:layout_width="250dp"
android:layout_height="250dp"
android:src="@drawable/competition"
android:id="@+id/competition" >
</ImageView>
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="10dp">
<ImageButton
android:id="@+id/date"
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_marginTop="26dp"
android:scaleType="fitXY"
android:src="@drawable/date" />
<ImageButton
android:id="@+id/mission"
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_marginTop="26dp"
android:scaleType="fitXY"
android:src="@drawable/mission" />
<ImageButton
android:id="@+id/you"
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_marginTop="26dp"
android:scaleType="fitXY"
android:src="@drawable/you" />
<ImageButton
android:id="@+id/competitionn"
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_marginTop="26dp"
android:scaleType="fitXY"
android:src="@drawable/competition" />
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
rotate_in.xml:
<?xml version="1.0" encoding="utf-8"?>
<scale
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="200"
android:fromXScale="0.0"
android:fromYScale="0.90"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="500"
android:toXScale="1.0"
android:toYScale="1.0" />
rotate_out.xml
<?xml version="1.0" encoding="utf-8"?>
<scale
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="0.0"
android:toYScale="0.90" />
我在第二个活动中使用它 overridePendingTransition(R.anim.rotate_in,R.anim.rotate_out);
使用fadein和fadeout动画时,该应用程序可以正常运行。请帮忙。
答案 0 :(得分:0)
首先,如果您只想旋转一个ImageView,而不是活动的整个内容,那么设置活动转换似乎不是一种方法。如果你告诉Android为一个活动设置动画,那么它将为整个活动设置动画。
另一种方法是直接将动画附加到ImageView。当用户单击(或您正在使用的任何触发器)时,您可以启动动画,首先设置动画侦听器,因此当动画完成时,您将启动新活动。像这样:
View you = findViewById(R.id.you);
RotateAnimation anim = new RotateAnimation(0f, 90f);
anim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
//TODO launch the other activity
finish(); // Finish this activity
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
you.startAnimation(anim);
我在代码中创建动画,但你当然可以把它放在XML中。此外,我使用RotateAnimation而不是ScaleAnimation,因为你说你想旋转它。