php蛇蛇大作战,Android ConstraintLayout 2.0:ConstraintLayoutStates

b1f87358c42631963c1335da342fe74c.png

随着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 的文件下创建不同状态的布局文件

7e63bc883c8def01450888c5429a0e99.png

第三步 创建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)

}

}

}

效果图

1824f73c20ef666947b2c8fcaa67f8e6.gif

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值