Android引導頁圖片拉伸問題

程序啓動時候通過設置主體Theme的方式設置引導頁,這樣會使程序視覺上啓動較快,不卡頓,參考以下鏈接:
https://blog.csdn.net/Mr_Tony/article/details/104414288
但是Theme設置引導頁只能設置圖片,通常情況下,直接放一張大圖作爲引導圖,但是Android屏幕分辨率衆多,會引起圖片拉伸問題(.9也不好使)。這裏提供以下解決方式:
通常製作的引導圖,背景是純色背景,中間有各種圖標。將這些圖標裁剪下來

定義drawable文件,代碼如下:
對logo圖片進行位置調整

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white" />
    <item android:top="@dimen/dd_dp100">
        <bitmap
            android:gravity="top"
            android:src="@drawable/splash_logo" /><!-- logo圖片,位於頂部 -->
    </item>
    <item android:bottom="@dimen/dd_dp100"><!--公司網址,位於底部 -->
        <bitmap
            android:gravity="bottom"
            android:src="@drawable/splash_net" />
    </item>
</layer-list>

定義主題:

    <style name="AppTheme.Launcher" parent="AppTheme">
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.LauncherBg" parent="AppTheme.Launcher">
        <!-- windowBackground可以設置爲一張圖片,也可以是能解析出圖片的XML文件-->
        <item name="android:windowBackground">@drawable/layer_launcher</item>
    </style>

    <style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/white</item>
        <item name="colorPrimaryDark">@color/white</item>
        <item name="colorAccent">@color/white</item>
        <item name="android:background">@color/white</item>

    </style>

定義空Activity,裏面不寫佈局,代碼如下:

public classSplashActivity extends AppCompatActivity {
    private Handler handler = new Handler();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        setStatusBarColor(Color.WHITE,this);
        // 設置沉浸式字體顏色
        ImmersiveManage.setStatusFontColor(getWindow(), Color.WHITE);
        super.onCreate(savedInstanceState);
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                gotoMain();
            }
        }, 2000);
    }
    
    private void gotoMain() {
        Intent intent = new Intent(StartActivity.this, SplashActivity.class);
        startActivity(intent);
        finish();
        overridePendingTransition(0, 0);
    }
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public static void setStatusBarColor(int statusColor, Activity activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = activity.getWindow();
            //取消設置Window半透明的Flag
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            //添加Flag把狀態欄設爲可繪製模式
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            //設置狀態欄爲透明
            window.setStatusBarColor(statusColor);
        }
    }
}

清單文件進行註冊:

<activity android:name=".login.activity.StartActivity"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.LauncherBg">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章