目前我有以下drawable(splash.xml
)定义:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/grey_300"/>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>
</layer-list>
我通过如下定义活动将其用于启动画面:
<activity
android:name=".SplashActivity"
android:label="@string/app_name"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
该风格来自styles.xml
:
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash</item>
</style>
,我想知道我是否可以在屏幕上居中显示徽标的动画(可能会旋转它)。达到目标的最佳途径是什么?我已经尝试在animated-rotate
元素内部使用item
,但直到现在都没有成功。
答案 0 :(得分:2)
也许这会有所帮助:
我注意到您使用了this指南。然而,有人在评论中问他是否可以在他的闪屏中添加动画,他的回答是:
使用我上面列出的闪屏模式无法制作动画。动画仅在应用程序已加载时才可用。
除此之外,您还可以为图层列表设置动画。只需将其作为背景应用于某些视图并为该视图设置动画。
答案 1 :(得分:0)
我遇到了同样的问题,并使用了一种解决方法。我创建了一个没有布局的SplashActivity和一个ProgressActivity,其中包含ProgressBar的布局,并使用Intent从SplashActivity转到ProgressActivity,从ProgressActivity转到MainActivity。下面是一些代码。感谢以下YouTube视频,用于在xml中设置ProgressBar:https://www.youtube.com/watch?annotation_id=annotation_1961654299&feature=iv&src_vid=yJ3cP6r8cxU&v=Ok30rN5SUe8
SplashTheme的抽奖:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<color android:color="#EEEEEE"/>
</item>
<item android:id="@android:id/background">
<shape
android:shape="ring"
android:innerRadiusRatio="24"
android:thickness="18dp"
android:useLevel="false">
<solid android:color="#EF9A9A"/>
</shape>
</item>
<item android:id="@android:id/progress">
<rotate
android:fromDegrees="0"
android:toDegrees="360">
<shape
android:shape="ring"
android:innerRadiusRatio="24"
android:thickness="18dp"
android:useLevel="false">
<gradient
android:color="@android:color/transparent"
android:angle="0"
android:startColor="#D50000"
android:type="sweep"
android:useLevel="false"/>
</shape>
</rotate>
</item>
</layer-list>
ProgressBar的Drawable:与上面相同,但从两个形状中删除了innerRadiusRatio和厚度。
content-progress xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="nl.braaks55.minesweeper.activities.Progress"
tools:showIn="@layout/activity_progress">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<ProgressBar
android:layout_width="160dp"
android:layout_height="160dp"
style="?android:attr/progressBarStyleLarge"
android:layout_gravity="center"
android:indeterminateDrawable="@drawable/progress_bar"
android:max="100"
android:progress="20"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/loading"
android:textAppearance="?android:textAppearanceLarge" />
</LinearLayout>
</android.support.constraint.ConstraintLayout>
SplashActivity:
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, ProgressActivity.class);
startActivity(intent);
finish();
}
}
ProgressActivity:
public class ProgressActivity extends AppCompatActivity {
private static final long DELAY = 3000L;
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
Intent intent = new Intent(ProgressActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
};
Timer timer = new Timer();
timer.schedule(timerTask, DELAY);
}
}