cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <>
Subject [jira] [Commented] (CB-8753) Maintain splash screen aspect ratio
Date Tue, 31 Mar 2015 00:38:53 GMT


ASF GitHub Bot commented on CB-8753:

Github user AlexTalis commented on a diff in the pull request:
    --- Diff: src/android/ ---
    @@ -194,9 +263,25 @@ public void run() {
                     // TODO: Use the background color of the webView's parent instead of
using the
                     // preference.
                     root.setBackgroundColor(preferences.getInteger("backgroundColor", Color.BLACK));
                     root.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                             ViewGroup.LayoutParams.MATCH_PARENT, 0.0F));
    -                root.setBackgroundResource(drawableId);
    +                // Use an ImageView to render the image because of its flexible scaling
    +                splashImageView = new ImageView(context);
    +                splashImageView.setImageResource(drawableId);
    --- End diff --
    Setting ImageView background color does work. It just does not show with any of the current
scaling options. Without "maintain aspect ratio" the image is stretched to fit screen, so
you never see the background. With "maintain aspect ratio" the image covers the screen fully,
so again you don't see the background.
    If I hard-code a scaling option like FIT_CENTER, then ImageView background color does
fill areas that are not covered by the drawable. So if the purpose of BG color is to simply
fill areas not covered by the drawable, then we can take out LinearLayout. I thought that
the purpose was to somehow cover up the WebView in background if the device is rotated, which
probably wouldn't work anyway. Here's the test app without LinearLayout, with scale mode temporarily
set to FIT_CENTER and BG color set to RED:

> Maintain splash screen aspect ratio
> -----------------------------------
>                 Key: CB-8753
>                 URL:
>             Project: Apache Cordova
>          Issue Type: Improvement
>          Components: Android
>    Affects Versions: 3.7.1
>         Environment: Android
>            Reporter: Alex Talis
>             Fix For: 3.8.0, 4.0.0, 3.7.1
>         Attachments: cur-land.png, cur-port.png, new-land.png, new-port.png
> I will be submitting a pull request for this enhancement shortly.
> Current splash screen scales images non-uniformly to fit into splash dialog. This approach
does not work well for many typical splash screen images that contain scenery or text and
look bad when aspect ratio is not preserved. 9-patch images may work, but they have to be
carefully designed so that the inside can be stretched without distorting important information.
> The purpose of this enhancement is to allow use of non-9-patch images without stretching,
similar to CSS "background-size:cover" capability. For this to work, splash images have to
have large safe area all around that can be safely cropped off.
> With this type of splash screen, it is usually necessary to use different images for
portrait and landscape orientations, so a second part of this enhancement is to add an option
to reload the drawable when orientation changes.
> Examples of the two preferences are shown below. Both are optional and default to False
to maintain current splash screen behavior.
> <preference name="SplashMaintainAspectRatio" value="true"/>
> <preference name="SplashReloadOnOrientationChange" value="true"/>

This message was sent by Atlassian JIRA

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message