Android常用组件:空布局empty_view,占位图封装

news2024/12/23 6:48:16

最近在做一件费劲不讨好的事情,那就是把项目中无关业务的代码功能模块抽出来,供以后使用。

既然费劲心机,不妨分享出来,大家可以一块学习借鉴。

直接来看看空布局的界面效果:

image.png

基本的布局就是以下结构:

image.png

xml代码布局如下:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  >
  <LinearLayout
    android:id="@+id/empty_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="24dp"
    android:visibility="visible"
    >

    <ImageView
      android:id="@+id/empty_image"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center_horizontal"
      android:layout_marginBottom="10dp"
      />

    <TextView
      android:id="@+id/empty_title"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center_horizontal"
      android:layout_marginTop="8dp"
      android:gravity="center"
      />

    <TextView
      android:id="@+id/empty_text"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center_horizontal"
      android:layout_marginStart="28dp"
      android:layout_marginTop="8dp"
      android:layout_marginEnd="20dp"
      android:textSize="12sp"
      android:gravity="center"
      />

    <com.sungrowpower.kit.button.SGButton
      android:id="@+id/empty_button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_marginTop="4dp"
      android:gravity="center"
      android:textColor="#ffffffff"
      android:text="默认文字"
      android:textAllCaps="false"
      app:sgkit_shapeRadius="30dp"
      app:sgkit_shapeSolidColor="#FF8100"
      />
  </LinearLayout>
</merge>

基本使用:

<com.sungrowpower.kit.empty.SGEmptyView
  android:id="@+id/empty_view"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  />
<com.sungrowpower.kit.empty.SGEmptyView
  android:id="@+id/empty_view_five"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  app:ev_buttonHeight="30dp"
  app:ev_buttonMarginTop="4dp"
  app:ev_buttonRadius="50dp"
  app:ev_buttonTextPaddingBottom="6dp"
  app:ev_buttonTextPaddingLeft="20dp"
  app:ev_buttonTextPaddingRight="20dp"
  app:ev_buttonTextPaddingTop="6dp"
  app:ev_buttonTextSize="14sp"
  app:ev_emptyDrawableMarginTop="10dp"
  app:ev_empty_backgroundColor="#FFFFFFFF"
  app:ev_empty_button="Create Now"
  app:ev_empty_buttonBackgroundColor="@color/sgkit_brand_routine"
  app:ev_empty_buttonTextColor="#FFFFFFFF"
  app:ev_empty_drawable="@drawable/sgkit_no_data"
  app:ev_empty_drawableTint="#FFFFFF"
  app:ev_empty_title="暂无数据"
  app:ev_empty_titleTextColor="@color/sgkit_text_dark_gray"
  app:ev_imageHeight="120dp"
  app:ev_imageWidth="120dp"
  app:ev_image_scaleType="centerCrop"
  app:ev_textButtonMarginTop="1dp"
  app:ev_empty_textSize="12sp"
  app:ev_titleTextMarginTop="1dp"
  app:ev_empty_titleTextSize="14sp"
  />

代码中使用:

/**
 *设置按钮格式
 * */
//emptyView.getButton().setBorderWidth(4).setRadius(50).setSolidColor(ContextCompat.getColor(this,R.color.sgkit_fill_white)).setDefaultStateTextColor(ContextCompat.getColor(this,R.color.sgkit_text_dark_gray)).setStrokeColor(ContextCompat.getColor(this,R.color.sgkit_success_routine)).build();
/**
 *设置空布局代码
 * */
emptyView.error()
    .setEmptyDrawable(R.drawable.sgkit_no_data)
    .setImageHeight(dpToPx(120))
    .setImageWidth(dpToPx(120))
    .setEmptyTitle("暂无数据")
    .setTitleColor(ContextCompat.getColor(this, R.color.sgkit_text_dark_gray))
    .setButtonText("重新获取")
    .setButtonTextSize(spToPx(14))
    .setButtonTextColor(ContextCompat.getColor(this, R.color.sgkit_text_title))
    .setButtonBackColor(ContextCompat.getColor(this, R.color.sgkit_brand_routine))
    .setButtonRadius(50)
    .setButtonHeight(dpToPx(30))
    .setButtonTextPaddingTop(dpToPx(1))
    .setButtonTextPaddingBottom(dpToPx(1))
    .setButtonTextPaddingLeft(dpToPx(30))
    .setButtonTextPaddingRight(dpToPx(30))
    .setOnClickListener(v -> Log.e("emptyView===", "setOnClickListener"))
    .show();
/**
 *设置空布局实体类数据
 * */
EmptyDataBean bean = new EmptyDataBean();
bean.mTopBackDrawable = getResources().getDrawable(R.drawable.sgkit_no_data);
bean.mTitleContent = "默认的实体类";
bean.mTitleColor = 0xFFCC3032;
bean.hasTextView = false;
bean.hasButtonView = false;
emptyViewTwo.setEmptyData(bean);
# 空状态使用说明

## EmptyViewBuilder 方法

| 方法名                                                   | 描述                       | 返回类型         | 默认值 |
| -------------------------------------------------------- | -------------------------- | ---------------- | ------ |
| setState(int state)                                      | 设置空布局状态             | EmptyViewBuilder | -1     |
| setOnClickListener(View.OnClickListener onClickListener) | 设置点击事件               | EmptyViewBuilder | -     |
| setEmptyTitle(CharSequence emptyTitle)                   | 设置一级文字内容           | EmptyViewBuilder | -     |
| setTitleColor(int titleColor)                            | 设置一级文字颜色           | EmptyViewBuilder | -     |
| setEmptyText(CharSequence emptyText)                     | 设置二级文字内容           | EmptyViewBuilder | -     |
| setButtonText(CharSequence buttonText)                   | 设置按钮文字               | EmptyViewBuilder | -     |
| setButtonTextColor(int buttonTextColor)                  | 设置按钮文字颜色           | EmptyViewBuilder | -     |
| setButtonTextSize(int buttonTextSize)                    | 设置按钮文字大小           | EmptyViewBuilder | 16dp   |
| setButtonBackColor(int buttonBack)                       | 设置按钮背景色             | EmptyViewBuilder | -     |
| setButtonBean(ButtonDataBean buttonDataBean)             | 设置按钮实体类             | EmptyViewBuilder | -     |
| setEmptyDrawable(Drawable emptyDrawable)                 | 设置顶部图片               | EmptyViewBuilder | -     |
| setButtonWidth(int width)                                | 设置按钮宽度               | EmptyViewBuilder | -     |
| setButtonHeight(int height)                              | 设置按钮高度               | EmptyViewBuilder | -     |
| setEmptyDrawableMarginTop(int marginTop)                 | 设置图片到顶部的距离       | EmptyViewBuilder | -     |
| setTitleTextMarginTop(int marginTop)                     | 设置一级文字到顶部的距离   | EmptyViewBuilder | -     |
| setTextMarginTop(int marginTop)                          | 设置二级文字到顶部的距离   | EmptyViewBuilder | -     |
| setButtonMarginTop(int marginTop)                        | 设置按钮距离底部的距离     | EmptyViewBuilder | -     |
| setButtonTextPaddingTop(int paddingTop)                  | 设置按钮文字距离顶部的距离 | EmptyViewBuilder | -     |
| setButtonRadius(int buttonRadius)                        | 设置按钮圆角弧度           | EmptyViewBuilder | -     |
| setButtonTextPaddingLeft(int paddingLeft)                | 设置按钮文字距离左侧的距离 | EmptyViewBuilder | -     |
| setButtonTextPaddingRight(int paddingRight)              | 设置按钮文字距离右部的距离 | EmptyViewBuilder | -     |
| setButtonTextPaddingBottom(int paddingBottom)            | 设置按钮文字距离底部的距离 | EmptyViewBuilder | -     |
| setImageWidth(int width)                                 | 设置图片宽度值             | EmptyViewBuilder | -     |
| setImageHeight(int height)                               | 设置图片高度值             | EmptyViewBuilder | -     |
| setImageScaleType(ImageView.ScaleType scaleType)         | 设置图片格式               | EmptyViewBuilder | -     |
| show()                                                   | 显示空布局                 | void             | -     |
| setDefaultStyle(EmptyViewBuilder builder)                | 设置全局默认的数据         | EmptyViewBuilder | -     |

## SGEmptyView 方法

| 方法名                             | 描述                 | 返回类型         | 默认值                         |
| ---------------------------------- | -------------------- | ---------------- | ------------------------------ |
| error()                            | 设置网络问题空布局   | void             | EmptyViewBuilder.ERROR         |
| empty_list()                       | 设置列表无数据空布局 | void             | EmptyViewBuilder.NODATE_LIST   |
| empty_search()                     | 设置搜索无数据空布局 | void             | EmptyViewBuilder.NODATE_SEARCH |
| builder()                          | 获取辅助类           | EmptyViewBuilder | builder                        |
| getButton()                        | 拿到按钮实例         | SGButton         | -                             |
| setButtonData(ButtonDataBean data) | 设置按钮信息         | void             | -                             |
| setEmptyData(EmptyDataBean data)   | 设置空布局实体类     | SGEmptyView      | -                             |

## Attributes 属性

| 属性                           | 描述                         | 类型      | 默认值    |
| ------------------------------ | ---------------------------- | --------- | --------- |
| ev_buttonHeight                | 空布局底部按钮高度           | dimension | -        |
| ev_buttonMarginTop             | 空布局底部按钮顶部外边距     | dimension | 10dip     |
| ev_buttonRadius                | 空布局底部按钮圆角弧度       | dimension | 30dip     |
| ev_buttonTextPaddingBottom     | 空布局底部按钮底部文字内边距 | dimension | -        |
| ev_buttonTextPaddingLeft       | 空布局底部按钮左侧文字内边距 | dimension | -        |
| ev_buttonTextPaddingRight      | 空布局底部按钮右侧文字内边距 | dimension | -        |
| ev_buttonTextPaddingTop        | 空布局底部按钮顶部文字内边距 | dimension | -        |
| ev_buttonTextSize              | 空布局底部按钮文字大小       | dimension | true      |
| ev_emptyDrawableMarginTop      | 图片距离顶部的距离           | dimension | 16dip     |
| ev_empty_backgroundColor       | 空布局背景颜色               | color     | -        |
| ev_empty_button                | 空布局按钮文字内容           | string    | -        |
| ev_empty_buttonBackgroundColor | 空布局按钮背景颜色           | color     | -        |
| ev_empty_buttonTextColor       | 空布局按钮文字颜色           | color     | #ffffffff |
| ev_empty_drawable              | 空布局图片                   | reference | -        |
| ev_empty_text                  | 空布局二级文字               | string    | -        |
| ev_empty_textColor             | 空布局二级文字颜色           | color     | -        |
| ev_empty_title                 | 空布局一级文字               | string    | -        |
| ev_empty_titleTextColor        | 空布局一级文字颜色           | color     | -        |
| ev_imageHeight                 | 空布局图片高度               | dimension | -        |
| ev_imageWidth                  | 空布局图片宽度               | dimension | -        |
| ev_image_scaleType             | 空布局图片格式               | enum      | -        |
| ev_textButtonMarginTop         | 空布局底部按钮距离顶部的距离 | dimension | -        |
| ev_empty_titleTextSize         | 空布局一级文字大小           | dimension | 17dip     |
| ev_empty_textSize              | 空布局二级文字大小           | dimension | 14dip     |
| ev_titleTextMarginTop          | 空布局一级文字距离顶部的距离 | dimension | 18dip     |

编码不易啊,最后附上源码地址:https://github.com/liyanfei250/EmptyView.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/938453.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python中的装饰器介绍

装饰器是Python编程语言中一种强大的特性&#xff0c;用于修改或增强函数或类的行为&#xff0c;而无需对它们本身进行修改。装饰器通常被用于在不改变原始代码的情况下&#xff0c;向函数或方法添加额外的功能&#xff0c;如日志记录、权限检查、数据格式转换等。装饰器本质上…

从小学到高考:讲述我与儿子的成长故事

三年前&#xff0c;当儿子考上高中的时候&#xff0c;我就想着写一篇文章做纪念&#xff0c;然后写了一半就放弃了&#xff0c;因为初中阶段充满了遗憾。在儿子高一拿到好成绩时&#xff0c;我又想着写一篇文章以作鼓励&#xff0c;写了一半也放弃了&#xff0c;因为革命尚未成…

聊天平台Revolt的搭建

经网友 凌尘 提醒&#xff0c;Web-Check 最新的镜像版本&#xff0c;容器端口已经从 8888 改为了 3000&#xff0c;特此更正&#xff01; 什么是 Revolt &#xff1f; Revolt 是一个开源的用户至上的聊天平台。是在不牺牲任何可用性的情况下与朋友和社区保持联系的最佳方式之一…

帝国CMS仿管理资源吧资料下载网站模板源码/下载会员+积分付费下载功能自动采集资源网站源码

帝国CMS仿管理资源吧资料下载网站模板源码&#xff0c;带下载会员积分付费下载功能自动采集资源网站源码&#xff0c;管理资源吧——为中小企业管理者提供全方位的管理资料下载服务&#xff1b;是一个所有资料免费下载&#xff0c;免注册、免登陆、免积分的公益性的管理知识共享…

地球的“第三极”及其在全球气候中的作用

青藏高原是全球气候系统的重要力量&#xff0c;也是气候变化的热点地区。一项新的审查总结了知识状况并确定了与该地区相关的研究需求。 西门措湖是一个冰川冰碛湖&#xff0c;坐落在青藏高原的山​​峰之中。图片来源&#xff1a;Tenace10/Wikimedia Commons &#xff0c; 资料…

ModaHub魔搭社区:WinPlan经营大脑开放API调用指南

本文主要是介绍开放API调用流程 1. 开放API调用流程 1.1 创建API-TOKEN 即API访问凭证, 是用户在调用API接口时的应用和组织身份凭证,请妥善保管。如遇到丢失或者泄漏的情况,请及时重新生成。 API-TOKEN生成方式: 请前往[管理中心]->[数据集成]页面创建/重新生成。Win…

将Series序列中的缺失值用后一个值填充Series.bfill()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 对于Series序列中的缺失值n1 用n1后面的值n2来填充替代 Series.bfill() [太阳]选择题 关于以下代码的说法中错误的是? import numpy as np import pandas as pd a pd.Series([1,np.nan,2,np.…

PCI控制器扫描PCI总线过程解析

1、PCI的三种地址空间介绍 地址空间描述命令说明I/O空间供给设备驱动程序使用I/O操作命令对设备对应的I/O地址空间进行访问&#xff0c;此类访问不可预取存储空间供给设备驱动程序使用memory操作命令对设备的Memory空间进行访问&#xff0c;其中Memory操作命令又可分为Prefech…

Linux部署RocketMQ并使用SpringBoot创建生产、消费者

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;RocketMQ、消息队列☀️每日 一言&#xff1a;在你心灰意冷、心烦意乱时也不要停下你的脚步&#xff01; 一、前言 RocketMQ&#xff08;Apache RocketMQ&#xff09;是一种开源的分布式消息中间…

【Day-21慢就是快】代码随想录-栈与队列-逆波兰表达式求值

逆波兰表达式&#xff1a;是一种后缀表达式&#xff0c;所谓后缀就是指运算符写在后面。 平常使用的算式则是一种中缀表达式&#xff0c;如 ( 1 2 ) * ( 3 4 ) 。 该算式的逆波兰表达式写法为 ( ( 1 2 ) ( 3 4 ) * ) 。 逆波兰表达式主要有以下两个优点&#xff1a; 去掉…

Cesium 显示经纬高

文章目录 需求分析 需求 页面展示经、纬度和高 分析 html <div id"latlng_show" style"width:340px;height:30px;position:absolute;bottom:40px;right:200px;z-index:1;font-size:15px;"><div style"width:100px;height:30px;float:left;…

浅析三维模型OBJ格式轻量化压缩文件大小的技术方法

浅析三维模型OBJ格式轻量化压缩文件大小的技术方法 在减小三维模型OBJ格式轻量化文件大小方面&#xff0c;有许多技术和方法可以使用。下面我将介绍一些常用的方法来减小OBJ文件的大小。 1、优化顶点数量&#xff1a;减少OBJ文件中的顶点数量是减小文件大小的一种有效方法。可…

LSF 安装目录,快速参考 LSF 命令、守护程序、配置文件、日志文件和重要集群配置参数

样本 UNIX 和 Linux 安装目录 守护程序错误日志文件 守护程序错误日志文件存储在 LSF_LOGDIR 在 lsf.conf 文件中定义的目录中。 LSF 基本系统守护程序日志文件LSF 批处理系统守护程序日志文件pim.log.host_namembatchd.log.host_namembatchd.log.host_namesbatchd.log.host_…

【Go 基础篇】切片:Go语言中的灵活数据结构

在Go语言中&#xff0c;切片&#xff08;Slice&#xff09;是一种强大且灵活的数据结构&#xff0c;用于管理和操作一系列元素。与数组相比&#xff0c;切片的大小可以动态调整&#xff0c;这使得它成为处理动态数据集合的理想选择。本文将围绕Go语言中切片的引入&#xff0c;介…

Java【手撕双指针】LeetCode 18. “四数之和“, 图文详解思路分析 + 代码

文章目录 前言一、四数之和1, 题目2, 思路分析3, 代码 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4d5; JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 &#x1f4d7; Java数据结构: 顺序表, 链表, 堆…

C# Emgu.CV 条码检测

效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Emgu.CV; using Emgu.CV.Util; using static Emgu.C…

ThinkPHP 资源路由的简单使用,restfull风格API

ThinkPHP 资源路由的简单使用&#xff0c;restfull风格API 一、资源控制器二、资源控制器简单使用 一、资源控制器 资源控制器可以轻松的创建RESTFul资源控制器&#xff0c;可以通过命令行生成需要的资源控制器&#xff0c;例如生成index应用的TestR资源控制器使用&#xff1a…

layoutdm:discrete diffusion model for controllable layout generation

自动布局生成是我之前做banner生成中非常重要的一步&#xff0c;好的布局是成功的一半&#xff0c;在19年之前甚至更早时间&#xff0c;我们做这块主要是对标阿里的鹿班&#xff0c;那时候的技术方案主要是我之前发的smartbanner中&#xff0c;基本还是要靠模板以及相应的pipel…

软考A计划-网络工程师-必考知识点-上

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

[C/C++]笔记-函数的栈空间(避免栈空间溢出)

个人主页&#xff1a;北海 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;C/C&#x1f91d;希望作者的文章能对你有所帮助&#xff0c;有不足的地方请在评论区留言指正&#xff0c;大家一起学习交流&#xff01;&#x1f9…