Android ConstraintLayout 基础 加 动画方式一

这玩意儿放了好久,总感觉有坑,另外比较懒,只会CV,太笨不想学

听说不好维护但是性能高,解决层层嵌套

理由:小界面可以用呀

听说2.0快出了

这他么还不学?等着猝死吧
 



然后,第一步 简单的试探一下

外层布局是ConstraintLayout,里边是小布局



    

Android ConstraintLayout 基础 加 动画方式一_第1张图片

看来默认是FrameLayout

额,看起来差不多


app:layout_constraintLeft_toRightOf="@id/tvflag"
 

那么这一句的意思就是标志物在左,去标志物的右边.

然后让右边的View matchparent,只需要向右加上约束,这里width设置为0dp ,另外如果width=wrap_content 那么就会 居中

        app:layout_constraintRight_toRightOf="parent"


app:layout_constraintTop_toBottomOf="@id/tvflag"

标志物在上,去标志物的下边

Android ConstraintLayout 基础 加 动画方式一_第2张图片



app:layout_constraintBottom_toBottomOf="parent"

Android ConstraintLayout 基础 加 动画方式一_第3张图片


 app:layout_constraintLeft_toRightOf="parent"
        app:layout_constraintRight_toLeftOf="parent"

二合一即为水平居中


app:layout_constraintTop_toBottomOf="parent"
        app:layout_constraintBottom_toTopOf="parent"

 

 二合一即为竖直居中

Android ConstraintLayout 基础 加 动画方式一_第4张图片


边距

如果要marginTop  那么必须先设置约束

 app:layout_constraintTop_toTopOf="parent"
        android:layout_margin="20dp"
android:layout_marginTop="20dp"

 


这么看来挺简单的 确实可以解决一些布局嵌套问题,,,

扩展: 恐怖动画效果

新东西当然不会这么low



All children of ConstraintLayout must have ids to use ConstraintSet

所有的子View 必须加Id

 

 

Android ConstraintLayout 基础 加 动画方式一_第5张图片


首先是俩个布局

默认 和 动画 俩个

默认




    

    

    




    

    

    

以我多年浸淫CV,这绝对和id 有关系

 private Button butStart;
    private Button butReset;

    private ConstraintSet mConstraintSet1, mConstraintSet2, mConstraintReset;
    private ConstraintLayout constraintLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();


        mConstraintSet1 = new ConstraintSet();
        mConstraintSet2 = new ConstraintSet();

        constraintLayout = findViewById(R.id.root_cons);

        //把默认 constraintLayout 布局放到 mConstraintSet1 中
        mConstraintSet1.clone(constraintLayout);

        //把标定位置变换的 constraintLayout 布局放到 mConstraintSet2 中
        mConstraintSet2.clone(this, R.layout.activity_main_anim);

    }

    private void initView() {
        butStart = (Button) findViewById(R.id.butStart);
        butReset = (Button) findViewById(R.id.butReset);

        butStart.setOnClickListener(this);
        butReset.setOnClickListener(this);
    }

    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.butStart:
                TransitionManager.beginDelayedTransition(constraintLayout);
                mConstraintSet2.applyTo(constraintLayout);

                break;
            case R.id.butReset:

                AutoTransition transition = new AutoTransition();
                transition.setDuration(500);
                TransitionManager.beginDelayedTransition(constraintLayout,transition);
                mConstraintSet1.applyTo(constraintLayout);

                break;
        }
    }


然后AutoTranstion 很显然是个子类,小赤佬,

那就Android ConstraintLayout 基础 加 动画方式一_第6张图片

 

changebounds( ) 效果同上

ChangeClipBounds( )21API 以上才能用 效果和上面相比 回去的时候没有动画,咯噔一下

ChangeImageTransform( )  效果同上  也是 咯噔 ,这个应该是处理图片的

ChangeScroll( )23API 才可以用 效果同上 咯噔

Explode()  效果同上 咯噔  感觉无意义这个可能是 共享元素滴 

 

 

 

 

 

 

你可能感兴趣的:(学习ing)