簡體   English   中英

某些設備中的啟動畫面失真

[英]Distorted splash screen in some devices

我在修復 android 上扭曲的閃屏問題時遇到了麻煩。 我正在使用 React Native。 請注意,這僅發生在某些設備上,例如,我有一個 android 版本為 4.2.2 的三星(啟動畫面未失真),而具有 8+ android 版本的三星的啟動畫面失真。

以下是附加的扭曲和未扭曲的啟動畫面:

第一張圖片是“NOT DISTORTED”顯示

第二張圖片是“DISTORTED”顯示

這是指南 啟動畫面指南的鏈接

在此處輸入圖片說明 在此處輸入圖片說明

使您的圖像視圖的高度和寬度相等意味着兩者都需要具有相同的大小

為所有屏幕尺寸以及您使用的設計提供資源? 你可以發布你的xml嗎?

經過編輯的解決方案將使您的 SplashScreen 在包括 API21 到 API23 在內的所有 API 上看起來都很棒

首先閱讀這篇文章並遵循制作啟動畫面的好方法。

如果您的徽標扭曲或不適合並且您只針對 APIs24+,您可以直接在其 xml 文件中縮小您的矢量可繪制對象,如下所示:

<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
android:viewportWidth="640"
android:viewportHeight="640"
android:width="240dp"
android:height="240dp">
<path
    android:pathData="M320.96 55.9L477.14 345L161.67 345L320.96 55.9Z"
    android:strokeColor="#292929"
    android:strokeWidth="24" />
</vector>

在上面的代碼中,我將在 640x640 畫布上繪制的可繪制對象重新縮放為 240x240。 然后我把它放在我的啟動畫面中,就像這樣,它工作得很好:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque"
android:paddingBottom="20dp" android:paddingRight="20dp" android:paddingLeft="20dp" android:paddingTop="20dp">

<!-- The background color, preferably the same as your normal theme -->
<item>
    <shape>
        <size android:height="120dp" android:width="120dp"/>
        <solid android:color="@android:color/white"/>
    </shape>
</item>

<!-- Your product logo - 144dp color version of your app icon -->
<item
    android:drawable="@drawable/logo_vect"
    android:gravity="center">

</item>
</layer-list>

我的代碼實際上只是在底部的圖片中繪制三角形,但在這里您可以看到使用它可以實現的目標。 與使用位圖時得到的像素化邊緣相比,分辨率終於很棒了。 所以一定要使用可繪制的矢量(有一個名為 vectr 的站點,我曾經創建我的站點,而無需下載專門的軟件)。

編輯以使其也適用於 API21-22-23

雖然上述解決方案適用於運行 API24+ 的設備,但在將我的應用安裝到運行 API22 的設備后,我感到非常失望。 我注意到閃屏再次試圖填滿整個視圖並且看起來像狗屎。 撕了半天的眉毛,我終於憑着意志力強行解決了。

您需要創建一個與啟動畫面 xml 完全相同的第二個文件(假設為 splash_screen.xml),並將其放入兩個名為 drawable-v22 和 drawable-v21 的文件夾中,您將在 res/ 文件夾中創建該文件夾(以便您查看它們)必須將您的項目視圖從 Android 更改為 Project)。 這用於告訴您的手機在相關設備運行與 drawable 文件夾中的 -vXX 后綴對應的 API 時重定向到放置在這些文件夾中的文件, 請參閱此鏈接 將以下代碼放置在您在這些文件夾中創建的 splash_screen.xml 文件的圖層列表中:

<item>
<shape>
    <size android:height="120dp" android:width="120dp"/>
    <solid android:color="@android:color/white"/>
</shape>
</item>

<!-- Your product logo - 144dp color version of your app icon -->
<item android:gravity="center">
    <bitmap android:gravity="center"
        android:src="logo_vect"/>

</item>

這些是文件夾的外觀

出於某些原因,對於這些 API,您必須將 drawable 包裝在位圖中以使其工作並噴射最終結果看起來相同。 問題是您必須將這種方法與其他可繪制文件夾一起使用,因為 splash_screen.xml 文件的第二個版本將導致在運行 API 高於 23 的設備上根本不顯示啟動畫面。您可能還必須放置將 splash_screen.xml 的第一個版本轉換為 drawable-v24 作為 android 默認為它可以找到的最接近的 drawable-vXX 資源文件夾。 它終於對我有用了

我的啟動畫面

請按照以下步驟操作:

1) 僅使用 Icon 並將背景設置為漸變可繪制。

2)白色圖標的寬度和高度應該相等。 使用 Icon 並放置在 XHDPI 和 XXHDPI 可繪制文件夾中。

布局設計:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/sample">

  <ImageView
    android:layout_width="90dp"
    android:layout_height="90dp"
    android:background="@android:color/white"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="90dp"/>
</RelativeLayout>

可繪制背景 sample.xml :

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
   <gradient
    android:startColor="#00ff00"
    android:endColor="#99ff99"
    android:angle="90"/>
   <corners
    android:radius="0dp"/>
 </shape>

具有多屏幕支持的示例輸出:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM