I am using the following style to display a splash screen for an android application written in MonoDroid. However, it seems to take the image and maximize it to fit the whole screen while messing up the aspect ratio. Thus, the image looks huge and awful.
Is there a way to get it to maximize, but maintain the aspect ratio so it still looks good?
<style name="Theme.Splash" parent="android:Theme">
<item name="android:windowBackground">@drawable/splashscreenimage</item>
<item name="android:windowNoTitle">true</item>
</style>
This is the activity in C# which creates the splash screen and goes to the login.
[Activity(MainLauncher = true, Theme = "@style/Theme.Splash", NoHistory = true)]
public class SplashScreenActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Start our real activity
StartActivity(typeof(LoginActivity));
}
}
There are several types of drawables in Android including actual bitmaps, nine-patch, and XML files. Try wrapping your image file with an XML file that gives it attributes and then use the XML file as drawable instead of the source image.
Let's assume your xml file is called scaled_background and your original image is simply background.png:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center"
android:src="@drawable/background" />
Instead of setting your background to reference @drawable/background
you'd set it to reference the XML file: @drawable/scaled_background
in this example. Details on the scaling modes are mentioned in the Drawable documentation.