Android Studio -旋转动画

nhaq1z21  于 2023-03-24  发布在  Android
关注(0)|答案(1)|浏览(162)

“我正在Android Studio中为Uni做一个项目,我想让一个行星旋转。行星在手机的左右两侧超出了边界,它位于中心。当我开始动画时,有行星的图像错过了手机边界之外的部分,我想我需要调整图像的大小,使其比手机本身更大,但我做不到。”我不明白怎么做,所以请帮助我。到目前为止,我只上了3节关于Android编程的课,但我想自己学习更多。
在mainactivity.xml中我有这个

<ImageView
            android:id="@+id/background_image"
            android:layout_width="match_parent"
            android:layout_height="732dp"
            android:animation="@anim/rotate"
            android:scaleType="matrix"
            android:src="@drawable/earth"
            android:visibility="visible" />
jhiyze9q

jhiyze9q1#

我很困惑这个问题是什么(请保持简短并删除不必要的细节)。根据我对这个问题的理解,这是我的答案:
要使行星图像在动画过程中显示完整,您可以尝试使用更大的图像大小,以适应行星的完整旋转,然后将其缩小以适应屏幕大小。
您可以修改ImageView的layout_width和layout_height属性以匹配较大图像的大小,然后使用android:scaleType=“fitCenter”属性缩小图像以适应屏幕大小。
例如,如果较大的图像大小为1200 x1200像素,则可以将layout_width和layout_height属性设置为1200 dp,并使用fitCenter作为缩放类型:

<ImageView
    android:id="@+id/background_image"
    android:layout_width="1200dp"
    android:layout_height="1200dp"
    android:animation="@anim/rotate"
    android:scaleType="fitCenter"
    android:src="@drawable/earth"
    android:visibility="visible" />

这将允许行星完全旋转而不会消失在屏幕边缘之外。您可能需要调整较大图像的大小以满足您的特定需要。
此外,您可以考虑在旋转动画中使用android:valueType=“matrix”,以确保行星在旋转过程中保持居中。
PS:如果你想以编程方式创建RotateAnimation,请使用以下代码:

RotateAnimation rotate = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(5000);
rotate.setInterpolator(new LinearInterpolator());

ImageView image = (ImageView) findViewById(R.id.background_image);

image.startAnimation(rotate);

如果希望动画保持在结尾的方向,请添加:return(true);
如果你想让动画永久地停留,没有结束,添加:setRepeatCount(Animation.Infinite);

相关问题