如何使用android活动转换为浮动动作按钮设置动画? [英] How to animate floating action button using android activity transition?

查看:24
本文介绍了如何使用android活动转换为浮动动作按钮设置动画?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我计划在我的一个项目中实现这样的东西,但我不清楚以下的概念,也没有这样的教程,而且你不会经常看到这个.下面是它的样子 (移动按钮)和

首先,您需要创建两个 ViewGroups,它们在过渡 API 中被称为场景".第一个场景包含转换前的视图,第二个包含转换后的视图.然后你应该用第二个场景替换第一个场景并提供 Transition ,它描述了从第一个场景到第二个场景的视图,以及第一个场景中的视图如何消失以及第二个场景中的视图如何出现.

在这个例子中,fab 按钮有困难,因为它是唯一一个在场景根"屏幕的白色区域外动画的视图.这就是为什么场景是全屏的,边距顶部等于蓝色星期一"标题的高度.

这里的所有过渡都是默认的,黄色背景过渡除外.黄色背景视图出现在带有圆形显示动画的第二个场景中.它会随着圆形显示折叠动画而消失.没有像这样的默认动画,这就是我编写自定义动画的原因:

import android.animation.Animator;导入 android.animation.AnimatorListenerAdapter;导入 android.support.transition.TransitionValues;导入 android.support.transition.Visibility;导入 android.view.View;导入 android.view.ViewAnimationUtils;导入 android.view.ViewGroup;公共类 CircularRevealTransition 扩展了可见性 {@覆盖public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {int startRadius = 0;int endRadius = (int) Math.hypot(view.getWidth(), view.getHeight());动画显示 = ViewAnimationUtils.createCircularReveal(view, view.getWidth()/2, view.getHeight()/2, startRadius, endRadius);//使视图不可见,直到动画真正开始视图.setAlpha(0);揭示.addListener(新AnimatorListenerAdapter(){@覆盖公共无效onAnimationStart(动画师动画){视图.setAlpha(1);}});回显;}@覆盖public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {int endRadius = 0;int startRadius = (int) Math.hypot(view.getWidth(), view.getHeight());动画显示 = ViewAnimationUtils.createCircularReveal(view, view.getWidth()/2, view.getHeight()/2, startRadius, endRadius);回显;}}

完整代码在这里:

import android.os.Bundle;导入 android.support.annotation.NonNull;导入 android.support.design.widget.FloatingActionButton;导入 android.support.transition.ArcMotion;导入 android.support.transition.ChangeBounds;导入 android.support.transition.Fade;导入 android.support.transition.Scene;导入 android.support.transition.Slide;导入 android.support.transition.Transition;导入 android.support.transition.TransitionListenerAdapter;导入 android.support.transition.TransitionManager;导入 android.support.transition.TransitionSet;导入 android.support.v7.app.AppCompatActivity;导入 android.view.Gravity;导入 android.view.View;导入 android.view.ViewGroup;公共类 MainActivity 扩展 AppCompatActivity {私有视图组 mSceneRoot;@覆盖protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);setSupportActionBar(findViewById(R.id.toolbar));mSceneRoot = findViewById(R.id.sceneRoot);//显示不带动画的场景1showScene1(false);}私人无效 showScene1(布尔动画){ViewGroup root = (ViewGroup) getLayoutInflater().inflate(R.layout.scene1, null);FloatingActionButton fab = root.findViewById(R.id.fab);fab.setOnClickListener(v -> {showScene2();});场景场景 = 新场景(mSceneRoot, root);过渡过渡 = 动画?getScene1Transition() : null;TransitionManager.go(场景,过渡);}私人无效showScene2(){ViewGroup root = (ViewGroup) getLayoutInflater().inflate(R.layout.scene2, null);查看 btnBack = root.findViewById(R.id.btnCancel);btnBack.setOnClickListener(v -> {showScene1(真);});场景场景 = 新场景(mSceneRoot, root);过渡过渡 = getScene2Transition();TransitionManager.go(场景,过渡);}私有转换 getScene2Transition() {TransitionSet set = new TransitionSet();//fab改变位置ChangeBounds changeTransform = new ChangeBounds();changeTransform.addListener(new TransitionListenerAdapter() {@覆盖public void onTransitionEnd(@NonNull Transition transition) {//隐藏动画结束时的fab按钮mSceneRoot.findViewById(R.id.fab).setVisibility(View.INVISIBLE);}});changeTransform.addTarget(R.id.fab);changeTransform.setDuration(300);//fab 圆弧路径ArcMotion arcMotion = new ArcMotion();arcMotion.setMaximumAngle(45);arcMotion.setMinimumHorizo​​ntalAngle(90);arcMotion.setMinimumVerticalAngle(0);changeTransform.setPathMotion(arcMotion);set.addTransition(changeTransform);//bg 循环显示动画开始CircularRevealTransition crt = new CircularRevealTransition();crt.addTarget(R.id.yellowBG);crt.setStartDelay(200);crt.setDuration(600);set.addTransition(crt);//按钮出现淡入淡出=新淡入淡出();淡入淡出.addTarget(R.id.btnBegin);淡入淡出.addTarget(R.id.btnCancel);淡入淡出.addTarget(R.id.text);淡入淡出.设置开始延迟(600);set.addTransition(fade);//左按钮列向左滑动幻灯片幻灯片=新幻灯片(重力.左);slide.addTarget(R.id.slideLeftContainer);set.addTransition(slide);//右按钮列向右滑动幻灯片 slide2 = new Slide(Gravity.RIGHT);slide2.addTarget(R.id.slideRightContainer);set.addTransition(slide2);返回集;}私有转换 getScene1Transition() {TransitionSet set = new TransitionSet();//场景2中的按钮淡出淡入淡出=新淡入淡出();淡入淡出.addTarget(R.id.btnBegin);淡入淡出.addTarget(R.id.btnCancel);淡入淡出.addTarget(R.id.text);set.addTransition(fade);//Circular Reveal 折叠动画开始CircularRevealTransition crt = new CircularRevealTransition();crt.addTarget(R.id.yellowBG);crt.setDuration(600);set.addTransition(crt);//然后fab按钮改变位置ChangeBounds changeTransform = new ChangeBounds();changeTransform.addTarget(R.id.fab);changeTransform.setDuration(300);changeTransform.setStartDelay(500);//圆弧路径ArcMotion arcMotion = new ArcMotion();arcMotion.setMaximumAngle(45);arcMotion.setMinimumHorizo​​ntalAngle(90);arcMotion.setMinimumVerticalAngle(0);changeTransform.setPathMotion(arcMotion);set.addTransition(changeTransform);//左按钮列从左侧滑入幻灯片幻灯片=新幻灯片(重力.左);slide.addTarget(R.id.slideLeftContainer);幻灯片.setStartDelay(500);set.addTransition(slide);//右侧按钮列从右侧滑入幻灯片 slide2 = new Slide(Gravity.RIGHT);slide2.addTarget(R.id.slideRightContainer);slide2.setStartDelay(500);set.addTransition(slide2);返回集;}}

activity_main.xml:

<android.support.v7.widget.Toolbarandroid:id="@+id/工具栏"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:background="?attr/colorPrimary"应用程序:layout_constraintLeft_toLeftOf="parent"应用程序:layout_constraintRight_toRightOf="parent"应用程序:layout_constraintTop_toTopOf="父"app:titleTextColor="#fff"/><框架布局android:id="@+id/topContainer"android:layout_width="match_parent"android:layout_height="@dimen/header_height"机器人:背景=#00BCD4"机器人:方向=垂直"应用程序:layout_constraintLeft_toLeftOf="parent"应用程序:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toBottomOf="@+id/toolbar"><文本视图android:layout_width="match_parent"android:layout_height="36dp"机器人:layout_gravity="底部"机器人:背景=#9000"机器人:重力=center_vertical"机器人:paddingLeft =8dp"机器人:文本=星期一"android:textColor="#fff"/></FrameLayout><框架布局android:id="@+id/sceneRoot"android:layout_width="match_parent"android:layout_height="0dp"机器人:clipChildren =假"android:clipToPadding="假"应用程序:layout_constraintBottom_toBottomOf="parent"应用程序:layout_constraintLeft_toLeftOf="parent"应用程序:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toBottomOf="@+id/toolbar"/></android.support.constraint.ConstraintLayout>

scene1.xml:

<线性布局android:id="@+id/slideLeftContainer"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_marginTop="@dimen/header_height"机器人:方向=垂直"><include layout="@layout/button"/><include layout="@layout/button"/><include layout="@layout/button"/></LinearLayout><线性布局android:id="@+id/slideRightContainer"android:layout_width="wrap_content"android:layout_height="match_parent"机器人:layout_gravity =正确"android:layout_marginTop="@dimen/header_height"机器人:方向=垂直"><include layout="@layout/button"/><include layout="@layout/button"/><include layout="@layout/button"/></LinearLayout><android.support.design.widget.FloatingActionButtonandroid:id="@+id/fab"android:layout_width="wrap_content"android:layout_height="wrap_content"机器人:layout_gravity =正确"android:layout_marginTop="@dimen/fab_margin_top"android:layout_marginRight="@dimen/fab_margin"安卓:可点击=真"机器人:焦点=真"应用程序:backgroundTint="#FFEE4D"app:srcCompat="@drawable/ic_add_black_24dp"/></FrameLayout>

scene2.xml:

<查看android:id="@+id/yellowBG"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#FFEE4D"/><android.support.design.widget.FloatingActionButtonandroid:id="@+id/fab"android:layout_width="wrap_content"android:layout_height="wrap_content"机器人:layout_gravity="中心"android:layout_margin="@dimen/fab_margin"应用程序:backgroundTint="#FFEE4D"app:srcCompat="@drawable/ic_add_black_24dp"/><按钮android:id="@+id/btnBegin"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="底部|左"android:layout_margin="@dimen/fab_margin"机器人:填充=16dp"机器人:文本=开始"android:textSize="22sp"/><文本视图android:id="@+id/文本"android:layout_width="@dimen/header_height"android:layout_height="wrap_content"机器人:layout_gravity="中心"机器人:重力=中心"android:text="Lorem ipsum dolor sat amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt"android:textSize="22sp"/><按钮android:id="@+id/btnCancel"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="底部|右"android:layout_margin="@dimen/fab_margin"android:backgroundTint="#FF5151"机器人:填充=16dp"机器人:文本=取消"android:textSize="22sp"/></FrameLayout>

button.xml:

values.xml:

I am planning to implement something like this in one of my project but the concept for the following is unclear to me, there's no such tutorial available either, moreover you don't get to see this very often. Here is how it looks like Click here to go to source

From all the references what i have understood is they have used two types of transition here one to move the button upto some extant and another to explode the button. So i did some digging and came across with these two library in github i think with these two we can achieve the following animation here are the links

Material Animations (to move the button) and Circular reveal (to make the button looks like being exploded)

If you find any better answer to the following please post here please

解决方案

Question is old, however it is still interesting. That's how I implemented this:

First of all you need to create two ViewGroups which in transition api are called "scenes". First scene contains views before transition, second one contain views after transition. Then you should just replace first scene with second one and provide Transition which describes how views from first scene goes to second scene, also how views in first scene disappear and how views in second scene appear.

In this example there is difficulty with fab button, because it is the only view which is animated out of white area of "scene root" screen. Thats why scenes are fullscreen with margin top which equals to height of blue "monday" header.

All transitions here are default except of yellow background transition. Yellow background view appears in second scene with circular reveal animation. And it dissapear with circular reveal collapse animation. There is no default animation like this, thats why I wrote custom one:

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.support.transition.TransitionValues;
import android.support.transition.Visibility;
import android.view.View;
import android.view.ViewAnimationUtils;
import android.view.ViewGroup;

public class CircularRevealTransition extends Visibility {

@Override
public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {
    int startRadius = 0;
    int endRadius = (int) Math.hypot(view.getWidth(), view.getHeight());
    Animator reveal = ViewAnimationUtils.createCircularReveal(view, view.getWidth() / 2, view.getHeight() / 2, startRadius, endRadius);
    //make view invisible until animation actually starts
    view.setAlpha(0);
    reveal.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationStart(Animator animation) {
            view.setAlpha(1);
        }
    });
    return reveal;
}

@Override
public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues) {
    int endRadius = 0;
    int startRadius = (int) Math.hypot(view.getWidth(), view.getHeight());
    Animator reveal = ViewAnimationUtils.createCircularReveal(view, view.getWidth() / 2, view.getHeight() / 2, startRadius, endRadius);
    return reveal;
}
}

Full code is here:

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.FloatingActionButton;
import android.support.transition.ArcMotion;
import android.support.transition.ChangeBounds;
import android.support.transition.Fade;
import android.support.transition.Scene;
import android.support.transition.Slide;
import android.support.transition.Transition;
import android.support.transition.TransitionListenerAdapter;
import android.support.transition.TransitionManager;
import android.support.transition.TransitionSet;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;

public class MainActivity extends AppCompatActivity {

    private ViewGroup mSceneRoot;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setSupportActionBar(findViewById(R.id.toolbar));
        mSceneRoot = findViewById(R.id.sceneRoot);
        //show scene1 without animation
        showScene1(false);
    }

    private void showScene1(boolean animated) {
        ViewGroup root = (ViewGroup) getLayoutInflater().inflate(R.layout.scene1, null);
        FloatingActionButton fab = root.findViewById(R.id.fab);
        fab.setOnClickListener(v -> {
            showScene2();
        });
        Scene scene = new Scene(mSceneRoot, root);
        Transition transition = animated ? getScene1Transition() : null;
        TransitionManager.go(scene, transition);
    }

    private void showScene2() {
        ViewGroup root = (ViewGroup) getLayoutInflater().inflate(R.layout.scene2, null);
        View btnBack = root.findViewById(R.id.btnCancel);
        btnBack.setOnClickListener(v -> {
            showScene1(true);
        });

        Scene scene = new Scene(mSceneRoot, root);
        Transition transition = getScene2Transition();
        TransitionManager.go(scene, transition);
    }

    private Transition getScene2Transition() {
        TransitionSet set = new TransitionSet();

        //fab changes position
        ChangeBounds changeTransform = new ChangeBounds();
        changeTransform.addListener(new TransitionListenerAdapter() {
            @Override
            public void onTransitionEnd(@NonNull Transition transition) {
                //hide fab button on the end of animation
                mSceneRoot.findViewById(R.id.fab).setVisibility(View.INVISIBLE);
            }
        });
        changeTransform.addTarget(R.id.fab);
        changeTransform.setDuration(300);
        //fab arc path
        ArcMotion arcMotion = new ArcMotion();
        arcMotion.setMaximumAngle(45);
        arcMotion.setMinimumHorizontalAngle(90);
        arcMotion.setMinimumVerticalAngle(0);
        changeTransform.setPathMotion(arcMotion);
        set.addTransition(changeTransform);

        //bg circular reveal animation starts
        CircularRevealTransition crt = new CircularRevealTransition();
        crt.addTarget(R.id.yellowBG);
        crt.setStartDelay(200);
        crt.setDuration(600);
        set.addTransition(crt);

        //buttons appear
        Fade fade = new Fade();
        fade.addTarget(R.id.btnBegin);
        fade.addTarget(R.id.btnCancel);
        fade.addTarget(R.id.text);
        fade.setStartDelay(600);
        set.addTransition(fade);

        //left buttons column slide to left
        Slide slide = new Slide(Gravity.LEFT);
        slide.addTarget(R.id.slideLeftContainer);
        set.addTransition(slide);
        //right buttons column slide to right
        Slide slide2 = new Slide(Gravity.RIGHT);
        slide2.addTarget(R.id.slideRightContainer);
        set.addTransition(slide2);
        return set;
    }

    private Transition getScene1Transition() {
        TransitionSet set = new TransitionSet();

        //buttons from scene2 fade out
        Fade fade = new Fade();
        fade.addTarget(R.id.btnBegin);
        fade.addTarget(R.id.btnCancel);
        fade.addTarget(R.id.text);
        set.addTransition(fade);

        //Circular Reveal collapse animation starts
        CircularRevealTransition crt = new CircularRevealTransition();
        crt.addTarget(R.id.yellowBG);
        crt.setDuration(600);
        set.addTransition(crt);

        //then fab button changes position
        ChangeBounds changeTransform = new ChangeBounds();
        changeTransform.addTarget(R.id.fab);
        changeTransform.setDuration(300);
        changeTransform.setStartDelay(500);
        //arc path
        ArcMotion arcMotion = new ArcMotion();
        arcMotion.setMaximumAngle(45);
        arcMotion.setMinimumHorizontalAngle(90);
        arcMotion.setMinimumVerticalAngle(0);
        changeTransform.setPathMotion(arcMotion);
        set.addTransition(changeTransform);

        //left buttons column slide in from left
        Slide slide = new Slide(Gravity.LEFT);
        slide.addTarget(R.id.slideLeftContainer);
        slide.setStartDelay(500);
        set.addTransition(slide);

        //right buttons column slide in from right
        Slide slide2 = new Slide(Gravity.RIGHT);
        slide2.addTarget(R.id.slideRightContainer);
        slide2.setStartDelay(500);
        set.addTransition(slide2);
        return set;
    }

}

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">


    <android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:titleTextColor="#fff" />

    <FrameLayout
    android:id="@+id/topContainer"
    android:layout_width="match_parent"
    android:layout_height="@dimen/header_height"
    android:background="#00BCD4"
    android:orientation="vertical"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/toolbar">

        <TextView
        android:layout_width="match_parent"
        android:layout_height="36dp"
        android:layout_gravity="bottom"
        android:background="#9000"
        android:gravity="center_vertical"
        android:paddingLeft="8dp"
        android:text="MONDAY"
        android:textColor="#fff" />
    </FrameLayout>

    <FrameLayout
    android:id="@+id/sceneRoot"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:clipChildren="false"
    android:clipToPadding="false"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/toolbar" />

</android.support.constraint.ConstraintLayout>

scene1.xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false">

<LinearLayout
    android:id="@+id/slideLeftContainer"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_marginTop="@dimen/header_height"
    android:orientation="vertical">

    <include layout="@layout/button" />
    <include layout="@layout/button" />
    <include layout="@layout/button" />
</LinearLayout>

<LinearLayout
    android:id="@+id/slideRightContainer"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="right"
    android:layout_marginTop="@dimen/header_height"
    android:orientation="vertical">

    <include layout="@layout/button" />
    <include layout="@layout/button" />
    <include layout="@layout/button" />
</LinearLayout>

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:layout_marginTop="@dimen/fab_margin_top"
    android:layout_marginRight="@dimen/fab_margin"
    android:clickable="true"
    android:focusable="true"
    app:backgroundTint="#FFEE4D"
    app:srcCompat="@drawable/ic_add_black_24dp" />
</FrameLayout>

scene2.xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false"
android:paddingTop="@dimen/header_height">

<View
    android:id="@+id/yellowBG"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFEE4D" />

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="@dimen/fab_margin"
    app:backgroundTint="#FFEE4D"
    app:srcCompat="@drawable/ic_add_black_24dp" />

<Button
    android:id="@+id/btnBegin"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|left"
    android:layout_margin="@dimen/fab_margin"
    android:padding="16dp"
    android:text="BEGIN"
    android:textSize="22sp" />

<TextView
    android:id="@+id/text"
    android:layout_width="@dimen/header_height"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt"
    android:textSize="22sp" />

<Button
    android:id="@+id/btnCancel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|right"
    android:layout_margin="@dimen/fab_margin"
    android:backgroundTint="#FF5151"
    android:padding="16dp"
    android:text="CANCEL"
    android:textSize="22sp" />

</FrameLayout>

button.xml:

<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="16dp"
    android:padding="24dp"
    android:text="6:30"
    android:textSize="24sp" />

values.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">TestTransition</string>

    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>

    <dimen name="fab_margin">16dp</dimen>
    <dimen name="header_height">200dp</dimen>
    <dimen name="fab_margin_top">132dp</dimen>
</resources>

这篇关于如何使用android活动转换为浮动动作按钮设置动画?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆