技术控

    今日:324| 主题:58125
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] MultiStateView:Android 通用状态切换视图

[复制链接]
MultiStateView

   参考 Kennyc1012/MultiStateView 这个这个写的,1.0版本只是在这个上面加了默认布局,以及修正了在设计器中无法预览的问题
  2.0是自己写的,主要增加了自定义状态,当然,核心原理还是那样
   用于切换不同View的各种状态,默认包含 Content , Empty , Fail , Loading 4个状态,并且支持添加其他状态
   并且处理了 Loading 显示时间很短立刻切换到其他状态时看起来好像 Loading 界面闪了一下
   

MultiStateView:Android 通用状态切换视图

MultiStateView:Android 通用状态切换视图-1-技术控-Android,android,center,layout,通用

  Using MultiStateView

  Layout

  1. <me.xdj.view.SimpleMultiStateView xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools"
  3.     xmlns:xdj="http://schemas.android.com/apk/res-auto"
  4.     android:id="@+id/multi_state_view"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     android:gravity="center"
  8.     xdj:msv_emptyView="@layout/msv_view_state_empty"
  9.     xdj:msv_failView="@layout/msv_view_state_fail"
  10.     xdj:msv_loadingView="@layout/msv_view_state_loading"
  11.     tools:context="me.xdj.multistateview.MainActivity">
  12.     <TextView
  13.         android:layout_width="match_parent"
  14.         android:layout_height="match_parent"
  15.         android:gravity="center"
  16.         android:text="Content" />
  17. </me.xdj.view.SimpleMultiStateView>
复制代码
可以通过以下属性自定义可状态下的视图
  1. <attr name="msv_loadingView" format="reference" />
  2. <attr name="msv_emptyView" format="reference" />
  3. <attr name="msv_failView" format="reference" />
复制代码
主要方法

  1. public void setViewState(int state) // 设置视图状态
  2. public int getViewState()           // 获得当前状态
  3. public View getView(int state)      // 获得指定状态的视图
  4. public void addViewForStatus(int status, int resLayoutID) // 增加状态
  5. public void setOnInflaterListener(OnInflateListener onInflateListener) // 各状态Layout inflate时触发(除了CONTENT)
复制代码
Tips
   1. 当从 Loading 状态切换到其他状态时,如果 Loading 持续时间低于 600ms 则会延迟 600ms 切换
   2. 除了 CONTENT 以外的状态 Layout 都是在首次调用 setViewState 后才会 inflate ,所以设置监听事件的话需要状态修改完成后设置,或者调用 setOnInflaterListener 进行设置
  常量

  1. public static final int STATE_CONTENT = 10001;
  2. public static final int STATE_LOADING = 10002;
  3. public static final int STATE_EMPTY = 10003;
  4. public static final int STATE_FAIL = 10004;
复制代码
代码

   具体代码可以看MultiStateFragment
  Including in your project

   要将 MultiStateView 引入你的项目,需要修改你的 build.gradle
  Add repository

  1. repositories {
  2.     maven { url 'https://jitpack.io' }
  3. }
复制代码
Add dependency

  1. dependencies {
  2.     compile 'com.github.XuDaojie:MultiStateView:v2.2.1'
  3. }
复制代码
喝水不忘挖井人

      Kennyc1012/MultiStateView
   android.support.v4.widget.ContentLoadingProgressBar    License

  Copyright XuDaojie
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at
   http://www.apache.org/licenses/LICENSE-2.0
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.



上一篇:FastPOS Updates in Time for the Retail Sale Season
下一篇:SigOpt In Depth: Building a Better Mousetrap via Multicriteria Bayesian Optimiza
刘逸翔 投递于 2016-10-20 04:46:21
解释就是掩饰,掩饰就是编故事!  
回复 支持 反对

使用道具 举报

yinghaizhilin 投递于 2016-10-21 10:13:00
沙发位出租
回复 支持 反对

使用道具 举报

我们只是孩子 投递于 2016-10-22 15:19:06
也是蛮拼的
回复 支持 反对

使用道具 举报

尔芙 投递于 2016-10-26 21:05:14
沙发???
回复 支持 反对

使用道具 举报

JSF629 投递于 2016-10-29 23:23:17
这样的好贴不顶不行
回复 支持 反对

使用道具 举报

刘萍 投递于 2016-11-10 01:21:11
宁愿笑着流泪,也不哭着说后悔.
回复 支持 反对

使用道具 举报

tingshang 投递于 2016-11-10 06:13:27
不要和地球人一般见识.
回复 支持 反对

使用道具 举报

樊诗雨 投递于 2016-11-12 09:29:49
曲筱绡、樊胜美、邱莹莹、安迪都会爱上我没有可以让你自豪的长发
回复 支持 反对

使用道具 举报

萌萌的 投递于 2016-11-13 17:31:38
不要迷恋楼主,楼主只是个传说。
回复 支持 反对

使用道具 举报

我要投稿

推荐阅读


回页顶回复上一篇下一篇回列表
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 | 粤公网安备 44010402000842号 )

© 2001-2017 Comsenz Inc.

返回顶部 返回列表