【问题标题】:Calling a new activity while rotating the ImageView旋转 ImageView 时调用新活动
【发布时间】:2014-11-13 15:07:24
【问题描述】:

我正在尝试 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);

应用程序在使用淡入和淡出动画时运行良好。请帮忙。

【问题讨论】:

    标签: android xml android-animation


    【解决方案1】:

    首先,如果您只想旋转一个 ImageView,而不是 Activity 的全部内容,那么设置 Activity 转换似乎不是要走的路。如果您告诉 Android 为 Activity 设置动画,它会为整个活动设置动画。

    另一种方法是将动画直接附加到 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,因为你说你想旋转它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多