アンドロイド - スタートページの背景画像設定(スプラッシュ)

著者:opLW
ブログ、6月中に最終試験の終了、および準備の多忙と秋募集の完全な段階に入っを書いていない長い時間のために。カーテンは、マインドマップを作成する前に、制御不能になりましたので、カーテンは覚えてどうあるべきかを学ぶ?それで終了仕上げは、それを共有するために秋を移動します。
最近、最適化のいくつかの知識を理解するために開始する前にアプリケーション、アプリケーションをやって、単に透明の背景を設定し、この時間は、ここに記録されたピットの多くにステップしないスタートページを作るために自分自身を決定します。

アリーナは、地図上の最初のルール

ここに画像を挿入説明

絵が示すように、最終的な結果は、何の芸術MMヘルプカット計画、これだけ**品質がないため?。

基本
  • 最適化を開始するために、関連する知識を理解する必要がありすぎて、そこに分析されていないされ、開始の最適化に関するオンライン記事では、学生が自分の谷の歌を理解していません。
  • 0.9形式の映像制作を知っておく必要があり、ここでは、Googleに自由、言うまでもありませんです。
どのようにそれを作るには?
  • windowBackgroundがひどく変形した後、0.9画面に画像を設定します。新しい最適化を開始するとき、によって学習することができ
    <item name="android:windowBackground">@drawable/bg_welcome</item>
    、上記のように0.9画像フォーマットを行うには喜びに満ちスタートページの背景画像として0.9形式の画像、およびのアプリケーションに追加されますstyle結果は次の通りです:
    ここに画像を挿入説明
    ?それは、画面の内容がひどく変形恥ずかしいディスプレイです。

  • ソリューション解決策を見つけるために、Googleの周り

    // style.xml文件
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
         <!-- Customize your theme here. -->
         <item name="colorPrimary">@color/colorPrimary</item>
         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
         <item name="colorAccent">@color/colorAccent</item>
     </style>
     ==1== //创建一个新的SplashTheme继承自AppTheme
     <style name="SplashTheme" parent="AppTheme">
         <item name="colorPrimary">@color/colorPrimary</item>
         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
         <item name="colorAccent">@color/colorAccent</item>
         <item name="android:windowBackground">@drawable/bg_welcome</item>
     </style>
    // AndroidManifest.xml文件
     <application
         //......
         android:theme="@style/AppTheme">
         <activity
             //...... 
     ==2==   android:theme="@style/SplashTheme">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
         <activity
             android:name=".ui.LoginActivity"
             android:label="@string/app_name" />
         <activity
             android:name=".ui.DetailListActivity" />
     </application>
    // MainActivity.kt文件
     override fun onCreate(savedInstanceState: Bundle?) {
          super.onCreate(savedInstanceState)
    ==3== setTheme(R.style.AppTheme_NoActionBar)
          setContentView(R.layout.activity_main)
     }
    
    • 1 [新規作成SplashThemeから継承をAppTheme
    • 2アプリケーションのオープン後の最初のスタートのためにはActivity、されるtheme0.9画像を含むように設定しますSplashTheme
    • 最初の2つのステップを設定した後、アプリケーションは私たちの0.9絵を見ることが初めてとなるオープン。しかし、MainActivityの背景画像が常に維持され、我々は、操作のページ0.9絵が消滅を入力した後、その第三段階があることを願っています
    • 3MainActivity.onCreate()方法内部将theme重新设置为没有背景图片的theme记住setTheme方法应该在setContentView方法之前调用,因为setContentView会确定好背景。
  • 优化操作

    • 如下图。制作.9图片时,将核心要显示的内容置于图片的中心,而四周使用透明的背景。ここに画像を挿入説明
      再配合shape制作一张layer-list,具体代码如下
      <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
      <item>
          <shape android:shape="rectangle">
              <solid
                  android:color="#fff"/>
          </shape>
      </item>
      <item android:gravity="center">
          <nine-patch
              android:src="@drawable/bg_welcome"
              android:tileMode="disabled" />
      </item>
      </layer-list>
      
      最后将上面这个文件设为SplashThemewindowBackground即可达到开头的效果。
  • 开头效果对应的.9图片
    ここに画像を挿入説明
    在适配不同分辨率时,绿色部分为可以拉伸的部分,而其他部分不会受影响。

新的认知
  • 可能大部分人跟我一样认为.9图片很神奇,可以适配不同分辨率,其实不然。(真正可以随意拉伸,分辨率不受影响的是.svg图片)。那么.9图片有什么用呢????

  • 记住一点.9格式的图片相比于普通的图片的优点,就是它指明了在需要大规模拉伸的时候,被拉动变形的部分,某种程度上解决了拉伸带来的图片严重变形的问题。(注意这里对变形的定义是:图片要显示的部分发生比率上的变化,在上面图片中来说就是人物的腿部被拉长)

  • 但是当把一张分辨率很低的.9图片置于分辨率很高的机型上时,依然会导致图片模糊,只是不会导致图片变形。所以即使是.9图片,为了适配不同分辨率的机型,依然需要制作不同分辨率的.9图片。

万水千山总是情,麻烦手下别留情。
如若讲得有不妥,文末留言告知我,
如若觉得还可以,收藏点赞要一起。

opLW原创七言律诗,转载请注明出处

公開された21元の記事 ウォン称賛28 ビュー7318

おすすめ

転載: blog.csdn.net/qq_36518248/article/details/95193024