再次提筆寫博客,已經相隔7年,原來的CSDN賬號需要手機驗證,而我的手機又捆綁到這個賬號了,就用新賬號吧,不想折騰了。
原賬號的帖子,有研究DICOM3.0的可以看下:http://blog.csdn.net/ruanxundianzi/article/details/6551471
最近從Delphi7——XE2——XE5——XE7,一路升級到Delphi XE10.2.2 Tokyo(以下均是以該版本講解),就為了Android App開發,而一開始就感覺到前所未有的困惑和障礙,App與PC的開發完全就是兩個不同的世界,Delhi7也與XE分別很大,FMX要搞懂也真不容易,遇到問題后,度娘、QQ群、壇子都幫不上很大的忙,問個問題要不石沉大海,要不就是三眼兩語模糊不清,怪不得DELPHI這么多年都不能折騰出大動靜,還好DELPHI基礎與鑽研精神再次幫了大忙,在這里將遇到的坑先寫出來,后續有人看,有時間再寫吧。
用DELPHI開發Android和IOS APP,別想着可以就用DELPHI的知識解決一切問題,就像用JAVA寫Android app時,也得了解下NDK C++吧,所以在DELPHI要開發出Android原生App的效果,不了解Android Java編程怎么行?所以前兩周一直放下所有的事情鑽了下JAVA APP開發,也寫了幾個小DEMO,算是入門,而就這個入門學到的知識,這次就解決了DELPHI遇到的兩個問題。這里先假設你已經具備部署了DELPHI XE10.2.2 SDK完整環境,並能夠創建、發布、調試Multi-Device Application了。
DELPHI XE Android Splash圖片的設備自適應能力和沉浸式狀態條,可以共用一個style.xml來配置顯示效果,splash稍微麻煩點,誰叫DELPHI非要搞一個限制大小的Splash配置工具呢。
看了網上的帖子,基本都是在菜單Project——Options—Application下先設置Splash,然后用不同大小的png圖片替換變態的DELPHI原有的半截圖片,但感覺一點都不好,設備屏幕比例一變化,替換的圖片變形還是很厲害,但我觀察java開發的app,如淘寶和百度、糯米等,原生的APP Splash圖片上連細小的文字都很清晰,變形基本沒有(我說的是手機APP,平板就需要不同尺寸圖片了,但原理都一樣),這就是Android XXX.9.png圖片的功勞,有興趣的朋友可以自行百度.9文件的制作方法,這里假設你已經有一張符合Android規范的.9圖片,並且已經按照上面通用的替換法替換掉原有的Splash圖片。
Delphi中在建立Android工程后,再創建兩個目錄(values-v19和values-v21),每個目錄中放一個style.xml,其中values-v19\style.xml中寫入:
<resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppTheme" parent="@android:style/Theme.NoTitleBar"> <item name="android:windowBackground">@drawable/splash_image</item> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentNavigation">true</item> </style> </resources>
values-v21\style.xml中寫入:
<resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppTheme" parent="@android:style/Theme.NoTitleBar"> <item name="android:windowBackground">@drawable/splash_image</item> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentNavigation">false</item> <item name="android:statusBarColor">@android:color/transparent</item> </style> </resources>
這里解釋下主要參數的意思:
1、<item name="android:windowBackground">@drawable/splash_image</item>
意思是窗口背景使用我們已經替換掉的.9圖片,@drawable/splash_image指通過project——Options——Deployment中幾個Remote Name為splash_image.png的圖片,如下圖:

2、<item name="android:windowTranslucentStatus">true</item>
這個參數設置為True就是狀態欄透明
3、 <item name="android:windowTranslucentNavigation">false</item>
導航欄透明,這里設置為false,你可以試試改為true看看效果。
另外的參數都可以看百度上的解釋,很全面,這里就不一一說了。
將剛才新建的兩個style.xml加入到發布中,Remote Path必須改成下圖的路徑,是為了讓設備上的Android系統根據自身版本自動使用DELPHI發布的最高版本Style.xml配置。

運行下看下沉浸式狀態條的效果吧:

Splash效果就看源代碼吧。源代碼中主窗口中間的10張圓形圖片布局還沒有搞,別見笑。
下載地址:
https://download.csdn.net/download/u011784006/10288788
想交流的朋友可以給我發郵件:515334412@qq.com或直接QQ我,晴空無彩虹。
