uni-app 安卓本地离线打包时 splash.9.png 启动页图片无法按9patch模式缩放,而是普通缩放
uni-app 安卓本地离线打包时 splash.9.png 启动页图片无法按9patch模式缩放,而是普通缩放
操作步骤
解压SDK离线项目Android-SDK@4.45.82353_20250106,将里面的splash.png换成附件自适应的splash.9.png,启动时发生变形
预期结果
预期结果:启动页图片能根据9patch的规则自动缩放
实际结果
实际结果:启动页图片没有按照9patch的规则自动缩放
bug描述
项目基于离线SDK项目HBuilder-Integrate-AS,在src\main\res\drawable目录,将原来的启动页图片splash.png去掉,采用splash.9.png启动页图片。
如示例图,来自插件市场的标准9patch自适应启动页演示图片。放到项目后无法按9patch规则显示,而是变成了普通拉伸。
此BUG在在最新的Android-SDK@4.28.82186_20240923版本出现,升级到最新Android-SDK@4.45.82353_20250106仍旧存在。据说云打包没有此问题,不知道离线和云打包有什么区别。
开发环境与版本信息
项目创建方式 | PC开发环境操作系统 | PC开发环境操作系统版本号 | HBuilderX类型 | HBuilderX版本号 | 手机系统 | 手机系统版本号 | 手机厂商 | 手机机型 | 页面类型 | vue版本 | 打包方式 |
---|---|---|---|---|---|---|---|---|---|---|---|
HBuilderX | Windows | 11 | 正式 | 4.28 | Android | Android 9.0 | 华为 | 荣耀X10 | vue | vue3 | 离线 |
在uni-app进行安卓本地离线打包时,如果遇到splash.9.png
启动页图片无法按9patch模式缩放的问题,通常是由于图片格式处理不当或配置不正确导致的。9patch图片(.9.png
)是一种Android特有的图片格式,它允许图片在拉伸时保持部分区域不变形,特别适用于按钮背景、对话框等需要拉伸但边缘或某些部分需保持原样的场景。
首先,确保你的splash.9.png
图片格式正确。你可以使用Android Studio或其他支持9patch编辑的工具来创建和验证9patch图片。在9patch图片中,图片的左上和顶部边缘会有一像素宽的黑色线条,用于定义拉伸区和内容填充区。
接下来,检查uni-app项目的配置。虽然uni-app本身对9patch图片的支持可能有限(主要用于原生组件或插件),但如果你是在自定义原生插件或通过原生代码处理启动页,以下是一个Android原生处理9patch图片的示例代码:
// 在你的Activity或Application类中设置启动页
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 使用9patchDrawable设置启动页
Drawable splashDrawable = getResources().getDrawable(R.drawable.splash_9, null);
View splashView = new ImageView(this);
splashView.setImageDrawable(splashDrawable);
// 设置全屏和布局参数
Window window = getWindow();
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
window.addContentView(splashView, new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
));
// 可以在这里添加延时移除启动页的逻辑
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// 移除启动页,显示主内容
window.removeView(splashView);
setContentView(R.layout.activity_main); // 替换为你的主布局
}
}, 3000); // 延时3秒
}
注意,上述代码是一个Android原生Activity的示例,用于展示如何加载和使用9patch图片作为启动页。在uni-app项目中,你可能需要将这段代码集成到你的原生插件或通过manifest.json
配置原生页面来实现。
如果你是在纯uni-app环境下工作,并且没有涉及到原生代码的开发,那么可能需要检查是否有相关的uni-app插件或社区解决方案支持9patch图片的启动页功能。如果没有,考虑使用普通的PNG图片作为启动页,或者通过原生开发来实现这一需求。