【转】Delphi XE10 Android Splash设备自适应和沉浸式状态条
再次提笔写博客,已经相隔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我,晴空无彩虹。
【转】Delphi XE10 Android Splash设备自适应和沉浸式状态条的更多相关文章
- Android 自动取色并设置沉浸式状态栏
Android 自动取色并设置沉浸式状态栏 - Stars-One的杂货小窝 最近在进行产品的优化,也是研究了下沉浸式状态栏的实现方法及自动取色,记录一下笔记 设置沉浸式状态栏 1.添加依赖 这里,是 ...
- bootstrap 自适应和响应式布局的区别
自适应: 不管屏幕多大,都尽量不换行,而只是横向缩放. 响应式: 屏幕变小了之后,属于同一行的元素受到挤压后,行的右边元素自动换行显式: 屏幕大了后,本属于同一行的元素尽可能的排在同一行内: boo ...
- Android ListView高度自适应和ScrollView冲突解决
在ScrollView中嵌套使用ListView,ListView只会显示一行到两行的数据.起初我以为是样式的问题,一直在对XML文件的样式进行尝试性设置,但始终得不到想要的效果.后来在网上查了查,S ...
- 10.3制作Android Splash启动界面
共分三步: 1.制作.9.png图片 可以参考这个文章. 2.修改项目文件,使用.9.png图片 用笔记本打开项目文件,先找到在项目中设置的Splash文件名,并改成第一步制作的.9.png文件名.例 ...
- 【技术分享会】 @第三期 CSS框架 PRUE 实现自适应和响应式
Pure网址:https://purecss.cn/ 什么是响应式和自适应? .响应式:样式会随着屏幕大小改变,同一页面设备不同样式不同 .自适应:不管屏幕大小,页面的样式比例不变 响应式和自适应怎么 ...
- 自适应和响应式布局的区别,em与rem
自适应布局:不同终端上显示的文字,图片,等位置排版都是一样的,只是大小不同. 响应式布局:通过媒体查询监听屏幕大小的变化,做出响应式的改变,在不同设备可能展现不同的样式效果. em:是相对其父元素的. ...
- 两句话,实现android 4.4以上实现沉浸式状态栏
效果图如下,就是状态栏和actionbar保持一致的颜色,非常漂亮 1:在Activity的OnCreate函数 if (Build.VERSION.SDK_INT >= Build.VERSI ...
- android Titlebar一行代码实现沉浸式效果
github地址 一个简单易用的导航栏TitleBar,可以轻松实现IOS导航栏的各种效果 整个代码全部集中在TitleBar.java中,所有控件都动态生成,动态布局.不需要引用任何资源文件,拷贝 ...
- Android 4.4沉浸式状态栏的实现
要实现Android 4.4上面的沉浸式状态栏要用到开源项目SystemBarTint(https://github.com/hexiaochun/SystemBarTint) public clas ...
随机推荐
- 将maven项目托管到github
1.下载安装git 并通过 git config --global user.name "",和git config --global user.email "" ...
- MVC实战之排球计分(四)—— View设计与实现
(view)视图 视图是用户看到并与之交互的界面.对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷 ...
- 把xml转成javabean的工具类
import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import javax.x ...
- js操作字符串的常用方法
使用 substring()或者slice() 函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str=”jpg|bmp|gif|ico|png”; arr=the ...
- acl使用示例
declare v_count number; uprinciple varchar2(20); principle varchar2(20); begin uprinciple := ...
- 数据结构与算法之PHP实现队列、栈
一.队列 1)队列(Queue)是一种先进先出(FIFO)的线性表,它只允许在表的前端进行删除操作,在表的后端进行插入操作,进行插入操作的端称为队尾,进行删除操作的端称为队头.即入队只能从队尾入,出队 ...
- Linux系统下tomcat的配置
Linux系统下tomcat的配置 完成后可以输入命令查看日志文件: 最后进入网页测试下吧: 可以出来这个网页就好了
- Tips about Troubleshooting RAC
Installation Log Filessoftware installation log files inside the logs directory of Oracle central in ...
- HTML(四)Form标签
<form>…</form> 定义供用户输入的 HTML 表单 例子 <html> <body> <form method="ge ...
- 当你有双网络(内部网+互联网)时,如何透明NAT给其他电脑上网。虚拟机+爱快
一:简介 具体环境是这样的:单位没有提供互联网连接,都是内部网,linux服务器,无法连接源更新,docker无法pull镜像,python无法在线pip安装包. 真是郁闷到想死啊. 好在我的笔记本有 ...