【问题标题】:Change View height programmatically Smoothly以编程方式平滑更改视图高度
【发布时间】:2013-08-08 10:55:07
【问题描述】:

我正在尝试以编程方式更改视图的高度。
我试过的是 -

RelativeLayout rlOne;
rlOne = (RelativeLayout) findViewById(R.id.rlOne);

在某些点击事件中,我正在使用 LayoutParams 更改高度。

rlOne.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, NEWHEIGHT));

高度增加但过渡不平滑。
如何实现从视图的原始高度到视图的新高度的平滑过渡?
我可以放慢过渡速度吗?

【问题讨论】:

  • 你为什么不简单地进行过渡?
  • @MocialovBoris :你能给我更多的意见吗?我应该使用缩放动画吗?

标签: android view height


【解决方案1】:

您可以编写一个 for 循环,其中视图的高度增加了非常少,而不是在增加计数器之前暂停。这样,用户会有平滑过渡的印象。

【讨论】:

    【解决方案2】:

    基本上这个想法是,你首先计算新的高度(视图增加后的高度)视图并编写一个线程,逐个像素地增加旧视图的高度(增加之前的视图高度)(可能一次是 5-10 个像素)直到它达到新的高度。希望这个想法能有所帮助。

    【讨论】:

      【解决方案3】:

      使用 from/to/speed 值

      ScaleAnimation scaleAnimation = new ScaleAnimation(from, to, from, to, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
      rlOne.setAnimation(scaleAnimation);
      

      来源:

      https://stackoverflow.com/a/1624689/1276374

      【讨论】:

      • 除了缩放还有什么,因为如果我从一侧缩放 textView,它看起来并没有减小宽度,它看起来像包含
      【解决方案4】:

      使用

      LinearLayout linearLayout = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
                                  LayoutParams.WRAP_CONTENT);
      

      【讨论】:

      • 不编译,你正在将一个 LinearLayout.LayoutParams 类型的 Object 的引用分配给一个 LinearLayout 类型的变量。
      猜你喜欢
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2017-10-18
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      相关资源
      最近更新 更多