安卓中一个好用的空白页,错误页,加载页切换插件

介绍一款UI工具,通过简单配置即可实现在APP中快速切换空白页、错误页、加载页等功能,提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近开发中为了良好的用户体验,需要加入空白页、错误页、加载页等页面,给APP一个缓冲时间。单独开发总是需要创建几个layout,秉着降低代码冗余的态度,自己写了一个小工具,只要添加一个依赖就可以简单的使用,实现随时随地的切换页面。

放效果图:

这里写图片描述

使用方法

1. 将其添加到你的项目的build.gradle中:

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

2. 在APP build.gradle中添加依赖

dependencies {
         implementation 'com.github.ChangJiahong:LoadingLayout:v0.1.2'
    }

3. xml代码中可以引用:

<com.demo.cjh.loadinglayoutlib.LoadingLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:pageType="loading_page">
</com.demo.cjh.loadinglayoutlib.LoadingLayout>

其中包括直接定义的属性有:

  • pageType : 枚举值(loading_page,error_page,empty_page) 页面类型
  • errorImage_layout_height : 错误页图片的高
  • errorImage_layout_width :错误页图片的宽
  • errorImageSrc : 错误页图片id
  • errorImageVisible :错误页图片是否显示
  • errorText :错误页提示字
  • errorTextSize : 错误页提示字大小
  • errorTextColor : 错误页提示字颜色
  • errorBtnText :错误页按钮提示字
  • errorBtnTextColor :错误页按钮字颜色

- errorBtnTextSize : 错误按钮提示字大小

  • emptyImage_layout_width :空页图片的宽
  • emptyImage_layout_height :空页图片的高
  • emptyImageSrc :空页图片id
  • emptyImageVisible :空页图片是否显示
  • emptyText :空页提示字
  • emptyTextColor :空页提示字颜色

- emptyTextSize :空页提示字大小

  • lodingText :加载页提示字
  • loadingTextColor :加载页提示字颜色

- loadingTextSize :加载页提示字大小

在代码中可以直接设置相关对象:
// 切换页面
loadingProgress.state = LoadingLayout.error_page
loadingProgress.show()

// 加载自定义页面
loadingProgress.state = LoadingLayout.define_Page
loadingProgress.setDefinePage(R.layout.define_layout)
loadingProgress.show()

// 设置页面gravity
loadingProgress.loadingPage.gravity = Gravity.BOTTOM
demo的xml
<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <Button
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="加载" />
        <Button
            android:id="@+id/btn2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="错误" />
        <Button
            android:id="@+id/btn3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="空页面" />
        <Button
            android:id="@+id/btn5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="自定义"/>
        <Button
            android:id="@+id/btn4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="全不显示"/>
    </LinearLayout>

    <com.demo.cjh.loadinglayoutlib.LoadingLayout
        android:id="@+id/loadingProgress"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >

    </com.demo.cjh.loadinglayoutlib.LoadingLayout>

</RelativeLayout>
kt代码
class MainActivity : AppCompatActivity(), View.OnClickListener {


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        btn1.setOnClickListener(this)
        btn2.setOnClickListener(this)
        btn3.setOnClickListener(this)
        btn4.setOnClickListener(this)
        btn5.setOnClickListener(this)

        loadingProgress.setErrorClickListener {
            Toast.makeText(this,"重试了",Toast.LENGTH_LONG).show()
        }
    }

    override fun onClick(v: View?) {

        when(v!!.id){
            R.id.btn1 ->{
                loadingProgress.state = LoadingLayout.loading_page
                loadingProgress.show()
            }
            R.id.btn2 ->{
                loadingProgress.state = LoadingLayout.error_page
                loadingProgress.show()
            }
            R.id.btn3 ->{
                loadingProgress.state = LoadingLayout.empty_page
                loadingProgress.show()
            }
            R.id.btn4 ->{
                loadingProgress.gone()
            }
            R.id.btn5 ->{
                loadingProgress.state = LoadingLayout.define_Page
                loadingProgress.setDefinePage(R.layout.define_layout)
                loadingProgress.show()
                //loadingProgress.show()
            }
        }
    }

}
### UniApp 安卓页面空白解决方案 对于UniApp在安卓设备上打开页面出现空白的情况,通常涉及多个可能的因素。这类问题不仅影响用户体验,还可能导致功能不可用。 #### 1. 检查网络请求配置 确保所有的API接口地址正确无误,并且服务器端能够正常响应请求。特别是在HTTPS环境下,需确认SSL证书有效并已正确安装[^1]。另外,在`manifest.json`文件中的`networkSecurityConfig`节点下适当配置网络安全策略可以避免因安全原因导致的数据加载失败: ```json { "app-plus": { ... "distribute": {}, "networkSecurityConfig": { "baseConfig": { "cleartextTrafficPermitted": true, "security": { "debugOverHttpEnabled": false, "customCerts": [] } }, "domainConfigs": {} } } } ``` #### 2. 调整编译模式与构建参数 尝试切换不同的编译方式(如HBuilderX内置编译器或命令行工具),以及调整Gradle版本号等构建环境变量来排除潜在兼容性冲突。有时降低gradle插件版本也能解决问题。 #### 3. 更新依赖库至最新稳定版 保持项目所使用的第三方组件处于最新的稳定状态有助于减少未知错误的发生几率。特别是VUE框架及其周边生态系统的更新迭代速度较快,及时跟进官方文档建议的操作指南十分必要。 #### 4. 清除缓存数据重试 清除浏览器缓存或者通过代码逻辑强制刷新视图可能是最简单有效的办法之一。可以通过调用`plus.runtime.restart()`方法重启整个应用流程达到目的;也可以利用Vue生命周期钩子函数配合路由守卫实现局部区域的重新渲染。 #### 5. 修改样式表防止布局异常引发白屏 当遇到特定分辨率下的显示错乱时,应该仔细审查CSS定义是否存在不合理之处。比如固定高度单位的选择不当可能会造成某些元素被隐藏从而形成视觉上的“空白”。此时应考虑采用相对定位或是弹性盒模型(Flexbox)来进行自适应设计[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值