{"id":13642417,"url":"https://github.com/XuDaojie/MultiStateView","last_synced_at":"2025-04-20T16:32:11.072Z","repository":{"id":175225780,"uuid":"51150764","full_name":"XuDaojie/MultiStateView","owner":"XuDaojie","description":"通用状态切换视图(已停止维护)","archived":false,"fork":false,"pushed_at":"2016-11-04T03:21:50.000Z","size":297,"stargazers_count":179,"open_issues_count":0,"forks_count":29,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-09T13:38:42.030Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/XuDaojie.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-02-05T14:19:19.000Z","updated_at":"2024-06-07T06:48:01.000Z","dependencies_parsed_at":"2024-01-14T11:08:55.829Z","dependency_job_id":"37b5ceba-9bfa-46f9-a4bf-c1f3aeb1c3ca","html_url":"https://github.com/XuDaojie/MultiStateView","commit_stats":null,"previous_names":["xudaojie/multistateview"],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XuDaojie%2FMultiStateView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XuDaojie%2FMultiStateView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XuDaojie%2FMultiStateView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XuDaojie%2FMultiStateView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XuDaojie","download_url":"https://codeload.github.com/XuDaojie/MultiStateView/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249926323,"owners_count":21346535,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T01:01:31.116Z","updated_at":"2025-04-20T16:32:10.663Z","avatar_url":"https://github.com/XuDaojie.png","language":"Java","readme":"MultiStateView\n==============\n[![JitPack](https://jitpack.io/v/XuDaojie/MultiStateView.svg)](https://jitpack.io/#XuDaojie/MultiStateView) \n[![API](https://img.shields.io/badge/API-8%2B-orange.svg?style=flat)](https://android-arsenal.com/api?level=8) \n[![Method and size](https://img.shields.io/badge/Methods and size-64 | 7 KB-e91e63.svg)](http://www.methodscount.com/?lib=com.github.XuDaojie%3AMultiStateView%3Av2.2.2)\n\n[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)\n[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-MultiStateView-green.svg?style=true)](https://android-arsenal.com/details/1/4386)\n\n参考[Kennyc1012/MultiStateView](https://github.com/Kennyc1012/MultiStateView)这个这个写的,1.0版本只是在这个上面加了默认布局,以及修正了在设计器中无法预览的问题\u003cbr\u003e\n2.0是自己写的,主要增加了自定义状态,当然,核心原理还是那样\n\n用于切换不同View的各种状态,默认包含`Content`,`Empty`,`Fail`,`Loading` 4个状态,并且支持添加其他状态\u003cbr\u003e\n处理了`Loading`显示时间很短立刻切换到其他状态时看起来好像`Loading`界面闪了一下\n\n![screenshot](https://github.com/XuDaojie/MultiStateView/blob/develop/art/MultiStateView.gif)\n\n## Using MultiStateView\n### Layout\n``` xml\n\u003cme.xdj.view.SimpleMultiStateView xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    xmlns:xdj=\"http://schemas.android.com/apk/res-auto\"\n    android:id=\"@+id/multi_state_view\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:gravity=\"center\"\n    xdj:msv_emptyView=\"@layout/msv_view_state_empty\"\n    xdj:msv_failView=\"@layout/msv_view_state_fail\"\n    xdj:msv_loadingView=\"@layout/msv_view_state_loading\"\n    tools:context=\"me.xdj.multistateview.MainActivity\"\u003e\n\n    \u003cTextView\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        android:gravity=\"center\"\n        android:text=\"Content\" /\u003e\n\u003c/me.xdj.view.SimpleMultiStateView\u003e\n```\n\n可以通过以下属性自定义可状态下的视图\n``` xml\n\u003cattr name=\"msv_loadingView\" format=\"reference\" /\u003e\n\u003cattr name=\"msv_emptyView\" format=\"reference\" /\u003e\n\u003cattr name=\"msv_failView\" format=\"reference\" /\u003e\n```\n\u003e Tips\u003cbr\u003e\n\u003e 由于`MultiStateView`继承于`FrameLayout`,直接子布局只能有一个,其他的不显示.\n\n### 主要方法\n``` java \npublic void setViewState(int state) // 设置视图状态 \npublic int getViewState()           // 获得当前状态\npublic View getView(int state)      // 获得指定状态的视图\npublic void addViewForStatus(int status, int resLayoutID) // 增加状态\npublic void setOnInflaterListener(OnInflateListener onInflateListener) // 各状态Layout inflate时触发(除了CONTENT)\n```\n\n\u003e Tips\u003cbr\u003e\n\u003e 1. 当从`Loading`状态切换到其他状态时,如果`Loading`持续时间低于**600ms**则会延迟**600ms**切换\u003cbr\u003e\n\u003e 2. 除了`CONTENT`以外的状态**Layout**都是在首次调用`setViewState`后才会**inflate**,所以设置监听事件的话需要状态修改完成后设置,或者调用`setOnInflaterListener`进行设置\n\n### 常量\n``` java\npublic static final int STATE_CONTENT = 10001;\npublic static final int STATE_LOADING = 10002;\npublic static final int STATE_EMPTY = 10003;\npublic static final int STATE_FAIL = 10004;\n```\n\n### 代码\n具体代码可以看[MultiStateFragment](https://github.com/XuDaojie/MultiStateView/blob/master/app/src/main/java/me/xdj/multistateview/MultiStateFragment.java)\n\n## Including in your project\n要将**MultiStateView**引入你的项目，需要修改你的**build.gradle**\n\n### Add repository \n``` groovy\nrepositories {\n    maven { url 'https://jitpack.io' }\n}\n```\n### Add dependency\n``` groovy\ndependencies {\n    compile 'com.github.XuDaojie:MultiStateView:v2.2.3'\n}\n```\n\n## 喝水不忘挖井人\n[Kennyc1012/MultiStateView](https://github.com/Kennyc1012/MultiStateView)\u003cbr\u003e\n[android.support.v4.widget.ContentLoadingProgressBar](https://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/v4/java/android/support/v4/widget/ContentLoadingProgressBar.java)\n\n## License\nCopyright XuDaojie\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\u003cbr\u003e\nyou may not use this file except in compliance with the License.\u003cbr\u003e\nYou may obtain a copy of the License at\u003cbr\u003e\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\u003cbr\u003e\ndistributed under the License is distributed on an \"AS IS\" BASIS,\u003cbr\u003e\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\u003cbr\u003e\nSee the License for the specific language governing permissions and\u003cbr\u003e\nlimitations under the License.\u003cbr\u003e","funding_links":[],"categories":["空白页"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FXuDaojie%2FMultiStateView","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FXuDaojie%2FMultiStateView","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FXuDaojie%2FMultiStateView/lists"}