Android Studio行星旋转动画问题:超出屏幕部分丢失求助
解决行星旋转时超出屏幕部分丢失的问题
问题原因
你的ImageView设置了layout_width="match_parent",导致图片被限制在屏幕宽度范围内,再加上父布局默认会裁剪超出自身范围的子View内容,所以旋转时超出屏幕的行星部分就被切掉了。
具体解决步骤
- 给ImageView的父布局添加
android:clipChildren="false",这个属性允许子View超出父布局范围显示,不会被裁剪 - 把ImageView的
android:layout_width="match_parent"改成android:layout_width="wrap_content",让ImageView的宽度适配行星图片的原始尺寸,而不是强行撑满屏幕宽度 - 确保ImageView居中显示:如果用ConstraintLayout,就给ImageView加上居中约束;如果用LinearLayout,就设置
android:layout_gravity="center" - 把
android:scaleType="matrix"改成android:scaleType="center",这个scaleType会保持图片原始尺寸并居中显示,适合你要的超出屏幕的效果(matrix需要手动做变换,对新手不太友好)
修正后的代码示例(以ConstraintLayout为例)
<androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" android:clipChildren="false"> <!-- 核心:允许子View超出显示 --> <ImageView android:id="@+id/background_image" android:layout_width="wrap_content" android:layout_height="732dp" android:animation="@anim/rotate" android:scaleType="center" android:src="@drawable/earth" android:visibility="visible" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" /> <!-- 让行星居中 --> </androidx.constraintlayout.widget.ConstraintLayout>
额外提示
如果你的行星图片本身尺寸不够大,先在PS或其他图片工具里把图片放大到比手机屏幕宽(比如1200px以上),再放到drawable目录里,这样超出屏幕的部分才会足够明显。
内容的提问来源于stack exchange,提问作者Ciobanww
相关产品推荐
相关产品推荐

