问题描述
真的不可能为Android和Ios配备旋转启动屏幕吗?
type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB"
对于Android,我在SplashActivity类的顶部具有以下内容
[Activity(MainLauncher = true,NoHistory = true,Theme = "@style/Theme.Splash",ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation,Screenorientation=Screenorientation.Portrait)]
我真正想要实现的是拥有一个初始屏幕,该屏幕可以旋转约6张图像。因此,第一次用户打开应用程序时,他们将看到第一张图片,依此类推。
我无法想象人们不希望启动画面是动态的。例如,在万圣节应用中,可能会在飞溅时显示南瓜等。
我只是在这里想念东西吗?
解决方法
在Android中,您可以为“启动画面”创建动画。我使用跳转作为参考。您可以根据需要创建.xml文件。
创建一个Anim
文件夹,并将hyperspace_jump.xml文件放入其中。
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0"
android:toXScale="1.4"
android:fromYScale="1.0"
android:toYScale="0.6"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="700" />
<set
android:interpolator="@android:anim/accelerate_interpolator"
android:startOffset="700">
<scale
android:fromXScale="1.4"
android:toXScale="0.0"
android:fromYScale="0.6"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="400" />
<rotate
android:fromDegrees="0"
android:toDegrees="-45"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="400" />
</set>
创建布局:
SplashScreen布局:
<RelativeLayout xmlns:p1="http://schemas.android.com/apk/res/android"
p1:minWidth="25px"
p1:minHeight="25px"
p1:layout_width="match_parent"
p1:layout_height="match_parent"
p1:background="@android:color/white"
p1:id="@+id/relativeLayout1">
<ImageView
p1:layout_width="wrap_content"
p1:layout_height="wrap_content"
p1:id="@+id/imageView"
p1:layout_centerVertical="true"
p1:layout_centerHorizontal="true"
p1:src="@drawable/a01" />
</RelativeLayout>
MainLayout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px">
<TextView
android:text="Main Activity Started"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView1"/>
</LinearLayout>
隐藏代码:
SplashScreenActivity:
public class SplashScreenActivity : Activity
{
ImageView imageView;
Animation view_animation;
TextView textview;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
RequestWindowFeature(Android.Views.WindowFeatures.NoTitle);
SetContentView (Resource.Layout.SplashScreen);
imageView = (ImageView)FindViewById(Resource.Id.imageView);
view_animation = AnimationUtils.LoadAnimation(this,Resource.Animation.hyperspace_jump);
imageView.StartAnimation(view_animation);
view_animation.AnimationEnd += Rotate_AnimationEnd;
}
private void Rotate_AnimationEnd(object sender,Animation.AnimationEndEventArgs e)
{
Finish();
StartActivity(typeof(MainActivity));
}
}
MainActivity:
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Main);
Toast.MakeText(this,"Welcome to MainActivity",ToastLength.Long).Show();
}
截屏:
您可以从GitHub下载以供参考。 https://github.com/WendyZang/Test/tree/master/SplashScreenDemo
已更新:
创建一个新活动来判断星期几。
Activity1.cs:从MainLauncher = true
中删除SplashScreenActivity
。
[Activity(Label = "SplashScreenDemo",MainLauncher = true)]
public class Activity1 : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
var dateTime = DateTime.Today;
if (dateTime.DayOfWeek== DayOfWeek.Thursday)
{
StartActivity(typeof(ThursdayActivity));
}
else if (dateTime.DayOfWeek == DayOfWeek.Monday)
{
StartActivity(typeof(SplashScreenActivity));
}
}
}
使用ImageView中的其他图像创建新的初始屏幕布局ThursdayLayout
,并为此命名为ThursdayActivity
创建新活动。
此后,您可以在星期四启动带有星期四初始屏幕的ThursdayActivity。