gpt4 book ai didi

android - 动画 View 的顶部和底部尺寸

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:59:24 24 4
gpt4 key购买 nike

我需要用 View 做两件事:

  1. 将顶部维度移动到窗口的最顶部
  2. 将底部维度移动到窗口的最底部。

简而言之,我需要 View 覆盖 100% 的父 View 。

平移动画不起作用,因为它会移动 View 但不会增加尺寸。

缩放动画有效,但它会拉伸(stretch) View 的内容,我不希望这样。我想增加可见区域,而不是拉伸(stretch)内容以适应新尺寸。

正确的做法是什么?

最佳答案

这可以通过 Transitions API 轻松实现.

使用 Transitions API,您无需负责编写动画,您只需告诉您想要的最终值是什么,Transitions API 将负责构建动画。

将此 xml 作为内容 View (屏幕中央的 View ):

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

<View
android:id="@+id/view"
android:layout_width="120dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:background="@color/colorAccent" />

</FrameLayout>

Activity 中:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.item)

val root = findViewById(R.id.root) as ViewGroup
val view = findViewById(R.id.view)

view.setOnClickListener {

// After this line Transitions API would start counting the delta
// and will take care of creating animations for each view in `root`
TransitionManager.beginDelayedTransition(root)

// By default AutoTransition would be applied,
// but you can provide your transition with the second parameter

// val transition = AutoTransition()
// transition.duration = 2000
// TransitionManager.beginDelayedTransition(root, transition)

// We are changing size of the view to match parent
val params = view.layoutParams
params.height = ViewGroup.LayoutParams.MATCH_PARENT
params.width = ViewGroup.LayoutParams.MATCH_PARENT

view.requestLayout()
}
}

这是输出:

平台的 Transitions API ( android.transition.TransitionManager ) 可从 API 19 获得,但支持库将功能向后移植到 API 14 ( android.support.transition.TransitionManager )。

关于android - 动画 View 的顶部和底部尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45417515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com