随着ConstraintLayout 2.0的推出,有一个名为ConstraintLayoutStates的有趣新功能。 ConstraintLayoutStates允许您创建具有不同状态的布局,并轻松地在它们之间切换。 通常,大多数布局包含加载状态,初始状态,结束状态和错误状态。 使用ConstraintLayoutStates,可以在这些不同的状态之间切换。

你如何使用这个新功能?

第一步 添加依赖

dependencies {

implementation 'com.android.support.constraint:constraint-layout:2.0.0-alpha2'

}

1

2

3

4

5

dependencies{

implementation'com.android.support.constraint:constraint-layout:2.0.0-alpha2'

}

或者用androidX变种

implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'

1

2

3

implementation'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'

第二步 在layout 的文件下创建不同状态的布局文件

第三步 创建ConstraintLayoutStatesXML文件

在xml资源文件夹中,创建包含状态的xml文件。 在此示例中,我们将其称为constraint_layout_states_example.xml 。 在此文件中放置布局的所有不同表示。 给他们有意义的id,如start , loading等,然后将它们链接到相关的约束文件。

xmlns:app="http://schemas.android.com/apk/res-auto">

android:id="@+id/start"

app:constraints="@layout/activity_constraint_layout_states_start" />

android:id="@+id/loading"

app:constraints="@layout/activity_constraint_layout_states_loading" />

android:id="@+id/end"

app:constraints="@layout/activity_constraint_layout_states_end" />

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

xmlns:app="http://schemas.android.com/apk/res-auto">

android:id="@+id/start"

app:constraints="@layout/activity_constraint_layout_states_start"/>

android:id="@+id/loading"

app:constraints="@layout/activity_constraint_layout_states_loading"/>

android:id="@+id/end"

app:constraints="@layout/activity_constraint_layout_states_end"/>

第四步 在状态之间切换

在您的Activity/Fragment中,您现在可以根据不同的条件轻松切换这些状态。 首先需要在ConstraintLayout对象上使用loadLayoutDescription()加载状态描述。 完成后,可以使用先前状态文件中定义的任何状态调用constraintLayout.setState() 。

在下面的示例中,我们将状态设置为loading状态。 然后过了一段时间(在这个例子中我只是post了一个延迟的runnable,模仿网络调用),我们将它设置为end状态。

class ConstraintLayoutStateTest : AppCompatActivity() {

val handler = Handler()

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_constraint_layout_states_start)

stateConstraintLayout.loadLayoutDescription(R.xml.constraintlayout_states_exmaple)

var change = false

button.setOnClickListener {

stateConstraintLayout.setState(R.id.loading, 0, 0)

HandlerCompat.postDelayed(handler, {

stateConstraintLayout.setState(if (change) R.id.start else R.id.end, 0, 0)

change = !change

}, null, 3000)

}

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

classConstraintLayoutStateTest:AppCompatActivity(){

valhandler=Handler()

overridefunonCreate(savedInstanceState:Bundle?){

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_constraint_layout_states_start)

stateConstraintLayout.loadLayoutDescription(R.xml.constraintlayout_states_exmaple)

varchange=false

button.setOnClickListener{

stateConstraintLayout.setState(R.id.loading,0,0)

HandlerCompat.postDelayed(handler,{

stateConstraintLayout.setState(if(change)R.id.startelseR.id.end,0,0)

change=!change

},null,3000)

}

}

}

效果图

您现在应该可以在自己的应用程序中使用ConstraintLayoutStates 。 这个例子可以在GITHUB上找到 。

php蛇蛇大作战,Android ConstraintLayout 2.0:ConstraintLayoutStates相关推荐

  1. java 贪吃蛇穿越边界,刨除可耻的山寨,《贪吃蛇大作战》是如何吸引那么多玩家...

    经典游戏贪吃蛇想必大家都玩过,你能想出这么经典的游戏要怎么创新才能比原作更好玩吗?贪吃蛇大作战就做到了,而且表现异常亮眼,这几天都登上免费榜第一的位置.一时间涌现出虫虫大作战.蛇蛇大作战.贪吃蛇等等产 ...

  2. Android程序——经典贪吃蛇大作战逆向分析

    逆向分析 1. 实现目标 2. 使用工具 3. 实现原理 4. 核心思路 5. 实现过程 1. 实现内购 2.屏蔽游戏下线提醒信息 1. 实现目标 (1)屏蔽经典经典贪吃蛇大作战游戏的过期提醒 (2) ...

  3. 贪吃蛇一直显示正在连接服务器,贪吃蛇大作战进不去怎么办 解决方法

    贪吃蛇大作战进不去怎么办?小编在试玩这款游戏时也发现跟很多小伙伴一样的问题--闪退,那么贪吃蛇大作战闪退怎么解决呢?我们一起来看看吧! 贪吃蛇大作战闪退解决方法: *,首先要看手机的配置,手机配置低, ...

  4. 贪吃蛇大作战html5,贪吃蛇大作战5.0.1

    贪吃蛇大作战5.0.1版本是一款用心制作的休闲多人竞技手游,贪吃蛇大作战5.0.1版本游戏吃掉无数对手和食物,各种混乱任务奖励,精致的皮肤效果最为华丽,解锁新地图场景.新颖有趣的通关方式实现了您的所有 ...

  5. java实现蛇蛇大作战_蛇蛇大作战3D旋涡版

    蛇蛇大作战3D旋涡版是一款趣味的手机游戏,在这里用户需要做的就是不断的寻找各种的游戏的亮点.这个过程是十分有趣的,喜欢的用户能在这里控制着你的蛇在游戏中不断的吞噬各种的小球,这里的每一个小球都是十分有 ...

  6. 贪吃蛇大作战中的“马太效应”

    贪吃蛇大作战中的"马太效应"     贪吃蛇大作战是这段时间很火的一款手机游戏,这个游戏的乐趣在于简单粗暴,对的,当下为工作生活而忙忙碌碌的我们是很难为一个手机游戏而牺牲太多的脑细 ...

  7. 贪吃蛇大作战JavaFx版完整源码

    贪吃蛇大作战 Java版 项目源码:https://github.com/silence1772/JavaFX-GreedySnake (记得点star啊,收藏一个项目最好的方式是star而不是for ...

  8. cocos creator开发微信小游戏(五)贪吃蛇大作战

    目录 小游戏介绍 小游戏cocos creator场景图 小游戏部分JS代码 开发中碰到的问题 工程及说明 小游戏介绍 贪吃蛇小游戏:贪吃蛇试玩(首次加载比较慢),类似贪吃蛇大作战的小游戏.当玩家的蛇 ...

  9. java 贪吃蛇 地狱模式_贪吃蛇大作战4.4.7版

    贪吃蛇大作战4.4.7版是一款极具挑战性的策略对战类手机游戏,贪吃蛇大作战4.4.7版采用先进3D引擎构建超清游戏世界,丰富的游戏场景和各色道具可供选择,更有各色皮肤和装扮打造属于自己独一无二的小蛇, ...

最新文章

  1. 字符串中最后一个单词长度
  2. 史上最全的前端开发面试题(含详细答案)
  3. 实时人脸识别例子-tensorflow2.x keras
  4. OpenShift 4 之Kafka(1)-部署Strimzi Operator运行Kafka应用
  5. 树莓派配置php环境变量,树莓派PHP环境配置 解决页面空白
  6. 又拍网架构-又一个用到python的网站(转载)
  7. 今天开始用 VSU 2010
  8. metabase开源BI
  9. 高薪岗位大数据开发工程师要如何入门?【重磅】
  10. php如何配置gii,PHP Framework YII的里的gii設置。
  11. creo 二次开发 protookit 官方make file 案例试运行
  12. [2012-08-21] HTTPC 的使用
  13. 数字ic设计流程以及相关工具
  14. Windbg串口联调
  15. Notability for Mac(笔记软件)
  16. ROS1云课→17化繁为简stdr和f1tenth
  17. React实现(Web端)网易云音乐项目(三),错过了真的可惜呀
  18. α测试测试与β测试的区别
  19. 在树莓派上安装mqtt客户端
  20. 西门子SMART PLC的自由口发送测试(一)

热门文章

  1. java word根据模板导出_简历不知道如何写起,推荐几个简历模板
  2. python表单防重复提交_防止表单重复提交的几种策略
  3. esp32摄像显示时间_TinyPICO-比拇指还小的ESP32开发板- 国外创客众筹发现第二期
  4. linux shell rman删除归档_Oracle备份恢复必会--rman迁移,附实验步骤介绍
  5. 字符串操作(Java)
  6. 用指针查找数组中温度值为32的天数
  7. 【c语言】蓝桥杯算法提高 7-1用宏求球的体积
  8. 服务器查看不到集群信息,集群服务器查看内存
  9. java mvc 绑定_关于Java:Spring MVC:将请求属性绑定到控制器方法参数
  10. tomcat历史版本新特性_tomcat升级后报错RFC 7230 and RFC 3986