我的项目简介

XUI是一个简洁而又优雅的Android原生UI框架,解放你的双手!

XUI能够说是我破费心血最多的开源我的项目了,目前略微大一点的我的项目我都会抉择引入它。XUI简直涵盖了目前Android开发所须要的所有组件,能够说有了XUI之后,能够大大提高咱们的开发效率,让咱们能够将精力很多地放在业务性能和数据处理上。能够说XUI是目前Github上组件最全、文档最具体、案例(200+)数量最多的Android原生UI库。

目前XUI在github上曾经领有2.6k的star量, 如果你喜爱的话,欢送点击star珍藏! 我的项目地址: https://github.com/xuexiangjys/XUI

设计原由

置信做过Android的人都晓得Android原生组件在国内很不受设计师的待见,至于Google推广的Material Design设计格调更是无人问津,这就导致了设计师给出的原型图简直是清一色的IOS格调,更难堪的是,网上Android相干的开源UI库是少之又少,这可就尴尬死咱们了,简直所有的根底组件都须要本人重写。之前也写过React和Vue,发现它们都有十分不便的UI库,而且应用起来也十分不便,间接在示例代码的根底上修修改改就能大抵上实现本人想要的成果,极大地提高了开发的效率。

设计思路

在开始着手做这样一个开源库之前,我是一点思路都没有的。好在在2017年的某一天,我接触到了QMUI,通过浏览它的源码,我发现它的设计思路十分好,能够通过设置不同的主题款式、组件属性等实现不同的组件成果,非常灵活;除此之外,它还对UI主题格调做了较为具体的制订和归类,能够说很有启发意义。于是我就遵循了QMUI的思路,开启了XUI的编写。

解决痛点

  • 简洁优雅,尽可能少得援用资源文件的数量,我的项目库整体大小有余1M。
  • 组件丰盛,提供了绝大多数咱们在开发者罕用的性能组件。
  • 应用简略,为不便疾速开发,进步开发效率,对api进行了优化,提供一键式接入。
  • 款式对立,框架提供了一系列对立的款式,使UI整体看上去好看谐和。
  • 兼容性高,框架还提供了3种不同尺寸设施的款式(4.5英寸、7英寸和10英寸),并且最低兼容到Android 17, 让UI兼容性更强。
  • 扩展性强,各组件提供了丰盛的属性和款式API,能够通过设置不同的款式属性,构建不同格调的UI。

演示我的项目

通过查看演示Demo的实现,能够疾速高效地把握UI组件的应用。

我的项目架构

我的项目页面次要应用XPage页面框架主动搭建,构造十分清晰。我的项目次要分为"组件"、"工具"和"拓展"三个局部。
  • 组件:组件页面次要蕴含了UI框架中所有组件的应用Demo样例,在"com.xuexiang.xuidemo.fragment.components"包下,点击查看。
  • 工具:工具页面次要蕴含了UI框架中所有辅助工具的应用Demo样例,在"com.xuexiang.xuidemo.fragment.utils"包下,点击查看。
  • 拓展:扩大页面次要蕴含了性能比较复杂的第三方UI组件集成Demo样例,在"com.xuexiang.xuidemo.fragment.expands"包下,点击查看

我的项目构造如下图:

Demo主页面如下图:

Demo体验

视频教程

https://www.bilibili.com/vide...

如何在我的项目中应用XUI: https://www.bilibili.com/video/BV1w7411c7Hy/

疾速集成

  • Android空壳模板工程(主动集成了XUI、XUtil、XAOP、XPage、XUpdate、XHttp2等): https://github.com/xuexiangjys/TemplateAppProject
  • 简化版的Android空壳模版工程(主动集成了XUI、XUtil、XAOP、XPage等): https://github.com/xuexiangjys/TemplateSimpleProject

集成指南

增加Gradle依赖

1.先在我的项目根目录的 build.gradle 的 repositories 增加:

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

【留神】切记不要跳过这一步,因为XUI目前只公布在jitpack平台上,跳过这一步会导致ERROR: Failed to resolve: com.github.xuexiangjys:XUI:x.x.x谬误!!!

2.而后在dependencies增加:

dependencies {  ...  //androidx我的项目  implementation 'com.github.xuexiangjys:XUI:1.1.5'  implementation 'androidx.appcompat:appcompat:1.1.0'  implementation 'androidx.recyclerview:recyclerview:1.1.0'  implementation 'com.google.android.material:material:1.1.0'  implementation 'com.github.bumptech.glide:glide:4.11.0'}

【留神】如果你的我的项目目前还未应用androidx,请应用如下配置:

dependencies {  ...  //support我的项目  implementation 'com.github.xuexiangjys:XUI:1.0.9-support'  implementation 'com.android.support:appcompat-v7:28.0.0'  implementation 'com.android.support:recyclerview-v7:28.0.0'  implementation 'com.android.support:design:28.0.0'  implementation 'com.github.bumptech.glide:glide:4.8.0'}

初始化XUI设置

1.在Application最顶部初始化设置(必须)

XUI.init(this); //初始化UI框架XUI.debug(true);  //开启UI框架调试日志

2.调整利用的根底主题(必须)

必须设置利用的根底主题,否则组件将无奈失常应用!必须保障所有用到XUI组件的窗口的主题都为XUITheme的子类,这十分重要!!!

根底主题类型:

  • 大平板(10英寸, 240dpi, 1920*1200):XUITheme.Tablet.Big
  • 小平板(7英寸, 320dpi, 1920*1200):XUITheme.Tablet.Small
  • 手机(4.5英寸, 320dpi, 720*1280):XUITheme.Phone
<style name="AppTheme" parent="XUITheme.Phone">    <!-- 自定义本人的主题款式 -->    <item name="colorPrimary">@color/colorPrimary</item>    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>    <item name="colorAccent">@color/colorAccent</item></style>

当然也能够在Activity刚开始时调用如下代码动静设置主题

@Overrideprotected void onCreate(Bundle savedInstanceState) {    XUI.initTheme(this);    super.onCreate(savedInstanceState);    ...}

3.调整字体库(对字体无要求的可省略)

(1)设置你须要批改的字体库门路(assets下)

//设置默认字体为华文行楷,这里写你的字体库XUI.getInstance().initFontStyle("fonts/hwxk.ttf");

(2)在我的项目的根底Activity中退出如下代码注入字体.

留神:1.1.4版本之后应用如下设置注入

@Overrideprotected void attachBaseContext(Context newBase) {    //注入字体    super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase));}

留神:1.1.3版本及之前的版本应用如下设置注入

@Overrideprotected void attachBaseContext(Context newBase) {    //注入字体    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));}

混同配置

-keep class com.xuexiang.xui.widget.edittext.materialedittext.** { *; }

常见问题

接入的问题

1.如何疾速上手XUI,晋升UI开发的效率?

  • 首先,请先认真依照接入文档接入XUI框架,不要跳步骤或者漏步骤,一步一步依照阐明来接入。除此之外,我也提供了视频教程供大家学习。
  • 其次,依照正确应用XUI的姿态的阐明,来应用XUI。
  • 最初,呈现问题能够查阅应用阐明文档或者钻研Demo的应用,确保本人的用法是正确正当的,不要想当然。源码浏览能力强的可间接翻看XUI的我的项目源码, 如果发现框架的确存在问题也能够点击提交Issue清单,将问题反馈给我解决。

2.为什么我减少XUI依赖后会报错:ERROR: Failed to resolve: com.github.xuexiangjys:XUI:x.x.x

答:这句话的意思是:无奈解析到XUI的依赖。呈现这种状况的起因是你没有配置近程依赖仓库jitpack地址。这里倡议你不要自以为是,老老实实依照应用阐明文档来引入依赖。

3.为什么我在应用XUI中的组件时,会报错说R文件找不到android.content.res.Resources$NotFoundException: File res/drawable/xxxxx.xml from drawable resource ID ...、属性获取不到Failed to resolve attribute at index ...或者布局解析出错android.view.InflateException:Binary XML file line #xx:Error inflating class <unknow>....

  • 首先,你须要确认的是你以后组件所在的窗口(Activity)所应用的主题是否继承了XUITheme主题,如果没有,请依照接入文档正确接入。这里须要阐明的是,XUI不同于其余开源组件库,他是一套对立的UI框架,有一套严格对立的属性款式规范,其中绝大多数组件和资源都应用了规范化的XUI款式主题属性,因而不应用XUITheme将无奈失常应用XUI框架。
  • 其次,如果你也应用了XUI主题,那么请查看你应用的context是否是所在窗口的context,组件中传入的context肯定不要应用XUI.getContext()之类的,不懂的本人去温习一下Android的根底吧,这里给个讲Android中的Context和Android中Context的类型, 本人去看吧。
  • 而后,如果你context也没应用错的话,那么请查看一下以后报错设施的零碎版本。因为在Android5.0(21)以下在drawable中应用?attr援用主题属性的话,也会导致R文件找不到的问题。而且同样是在Android5.0(21)以下,如果你应用vector加载SVG图片的话,同样也会导致R文件找不到,因为在Android5.0(21)以下零碎是不反对加载SVG图片的。
  • 最初,如果以上都查看过但问题仍然存在,你能够尝试降级XUI至最新版本(留神最新版本只反对AndroidX)。如果降级了问题仍然存在,那么就要思考是不是你的用法有问题了,倡议多看看XUI我的项目中的演示Demo,点击查看学习演示Demo的用法。

4.XUI有反对Support和AndroidX的版本吗?

答:最新的版本是只反对AndroidX的。从XUI 1.0.5当前,是反对AndroidX的版本,1.0.5之前的版本是反对Support的版本。这里我倡议应用最新版本(AndroidX版本),因为之前的版本可能存在一些兼容性的bug,并在前面的版本被逐个修复。如果你仍然想应用Support版本的话,要么你就应用1.0.5之前的版本(存在一些低版本兼容性的bug),要么你就clone一下以后最新版本的源码,将其改为Support版本本地导入依赖应用。

【这里思考到还有一大部分人在应用support,为了不便大家应用,我在以后较为稳固的1.0.9版本上批改了一个反对support的版本1.0.9-support供大家过渡应用。】

5.Glide版本抵触问题怎么解决?

答:XUI依赖的Glide版本在1.1.3之前必须是4.8.0, 1.1.3及之后应用的是4.11.0。

6.XUI反对全局性的字体批改吗?

答:XUI是反对全局性的字体批改的。详情参见接入文档。

7.XUI反对自定义属于本人的主题吗?如何自定义主题以合乎设计师给出的UI格调。

答:XUI是反对自定义主题的。详情参见如何自定义本人的主题。

演示Demo相干的问题

1.为什么XUIDemo我的项目我运行不起来?

答:演示Demo的程序跑通是必定没有任何问题的。这里举荐应用Android Studio 3.4.1以上的版本关上运行。详情参见如何运行Demo程序。除此之外,请不要批改gradle的版本,因为降级gradle版本可能导致依赖加载失败的问题.

2.演示Demo中的"组件"、"工具"和"拓展"都蕴含了什么内容?

答:"组件"中次要蕴含了XUI对外提供的绝大多数组件的应用案例,"工具"中次要蕴含XUI对外提供辅助工具的应用案例。
而"拓展"中蕴含的则是一些第三方罕用的UI组件库应用案例,非XUI中提供的内容。详情参见演示Demo介绍。


资源链接

  • XUI系列教学视频: https://space.bilibili.com/483850585/channel/detail?cid=104998
  • XUI应用文档: https://github.com/xuexiangjys/XUI/wiki
  • Android空壳模板工程(主动集成了XUI、XUtil、XAOP、XPage、XUpdate、XHttp2等): https://github.com/xuexiangjys/TemplateAppProject
  • 简化版的Android空壳模版工程(主动集成了XUI、XUtil、XAOP、XPage等): https://github.com/xuexiangjys/TemplateSimpleProject

微信公众号

更多资讯内容,欢送扫描关注我的集体微信公众号:【我的Android开源之旅】