我在用
<item name="android:windowBackground">@drawable/splash_background</item>
制作启动画面。它非常快,所以我更喜欢它而不是布局系统。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/login_blurry_bg"/>
<item
android:id="@+id/progress"
android:gravity="center"
android:width="62dp"
android:height="62dp">
<rotate
android:fromDegrees="45"
android:toDegrees="45"
android:pivotX="-40%"
android:pivotY="87%"
android:drawable="@drawable/ic_progress_round"/>
</item>
我想在 SplashActivity.java 上旋转这个 drawable
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayerDrawable layerDrawable = (LayerDrawable) getWindow().getContext().getResources().getDrawable(R.drawable.splash_background);
RotateDrawable drawable = (RotateDrawable) layerDrawable.findDrawableByLayerId(R.id.progress);
ObjectAnimator mAnimator = ObjectAnimator.ofInt(drawable, "level", 0, 10000);
mAnimator.setDuration(300);
mAnimator.start();
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
}
但是动画不工作。
我还想要在 MainActivity 打开时显示过渡。但这也行不通。
overridePendingTransition(R.animator.slide_in_left, R.animator.slide_out_right);
在 Splash Activity 中使用了它。
我觉得我做错了什么。请帮我解决这个问题。
最佳答案
请保留此代码
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
},10000);
而不是这些代码行:
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
以上代码可以工作,但由于从 Splace 到 Main Activity 的快速转换,您看不到它的效果。
您可以根据自己的喜好设置后延迟毫秒值。
关于android - 旋转图层列表中的项目以显示启动画面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51893270/