web-dev-qa-db-ja.com

自動フィットでスプラッシュ画面の画像を表示する

Android MonoDroidで記述されたアプリケーションのスプラッシュスクリーンを表示するために次のスタイルを使用しています。しかし、アスペクト比をめちゃくちゃにしながら画像を取り、画面全体に収まるように最大化しているようです。したがって、画像は巨大でひどいように見えます。

それを最大化する方法はありますが、アスペクト比を維持して、見栄えをよくすることはできますか?

<style name="Theme.Splash" parent="Android:Theme">
  <item name="Android:windowBackground">@drawable/splashscreenimage</item>
  <item name="Android:windowNoTitle">true</item>
</style>

これは、スプラッシュ画面を作成してログインに進むC#のアクティビティです。

  [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));
    }
  }
24
Telavian

Androidには、実際のビットマップ、9パッチ、XMLファイルを含む、いくつかのタイプのドローアブルがあります。属性を指定したXMLファイルで画像ファイルをラップしてから、ドローアブルとしてXMLファイルを使用してくださいソース画像の代わりに。

Xmlファイルの名前がscaled_backgroundで、元の画像が単に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" />

背景を参照に設定する代わりに@drawable/background XMLファイルを参照するように設定します:@drawable/scaled_backgroundこの例では。スケーリングモードの詳細は Drawableドキュメント に記載されています。

32
profexorgeek

アスペクト比をめちゃくちゃにしながら、画像を取り、最大化して画面全体に収まるようです。したがって、画像は巨大で恐ろしく見えます。

それを最大化する方法はありますが、アスペクト比を維持して、見栄えをよくしますか?

画像が拡大される理由は、使用する画像がアプリをテストしているデバイス画面の解像度よりも高いピクセルであるためです。これを解決するには、最良の方法は、適切なサイズ(ピクセル)の画像を別のデバイス画面に作成し、それらをに配置することですそれに応じて、drawableファイル(drawable-ldpi、drawable-mdpi、drawable-hdpiなど)。

以下は、Googleが提供するさまざまなディスプレイの最小画面サイズのリストです(すべてピクセル単位)。


Androidモバイルデバイス

LDPI- 426 x 320

MDPI- 470 x 320

HDPI- 640 x 480

XHDPI- 960 x 720


Androidタブレットデバイス

LDPI- 200 x 320

MDPI- 320 x 480

HDPI- 480 x 800

XHDPI- 720 x 1280


XMLドローアブルをres/drawableに作成して、スプラッシュアクティビティの背景layer-listを使用してテーマ(Theme.Splash)で。画像は<bitmap>にロードされ、centergravity属性を使用して整列されます。

<!-- background_splash.xml -->
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <item
        Android:drawable="@color/gray"/>

    <item>
        <bitmap
            Android:gravity="center"
            Android:src="@drawable/splashscreenimage"/>
    </item>

</layer-list>

style(Theme.Splash)およびbackground_splash.xmlをテーマのスプラッシュアクティビティのbackgroundとして設定します。

<style name="Theme.Splash" parent="Android:Theme">
    <item name="Android:windowBackground">@drawable/background_splash.xml</item>
    <item name="Android:windowNoTitle">true</item>
</style>

これで、アスペクト比を維持したまま画像を中央に配置する必要があります。

注:画像のサイズ変更には、Adobe Photoshopを使用できます(作業しやすいと思います)。スプラッシュスクリーンに必要な正しい画像サイズを取得するには、少し実験を行う必要があります。

好みに応じて、9パッチ画像を使用して、画像の境界線を画面のサイズに合わせて引き伸ばすことができます。画像。


参照リンク:

Building Splash Screen:https://plus.google.com/+AndroidDevelopers/posts/Z1Wwainpjhd

スプラッシュ画面の画像サイズ:ldpi、mdpi、hdpi、xhdpiディスプレイのAndroidスプラッシュ画面サイズ?-例:ldpiの1024X768ピクセル

7
Kaushik NP