日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android自动伸展动画,android – 如何实现平滑的展开/折叠动画

發布時間:2023/12/15 Android 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android自动伸展动画,android – 如何实现平滑的展开/折叠动画 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我指的是在這里找到的擴展/折疊動畫代碼.

雖然這樣做不好,動畫不順利.

我做一些登錄代碼.

public static void expand(final View v) {

v.measure(MeasureSpec.makeMeasureSpec(((View)v.getParent()).getWidth(), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(1024, MeasureSpec.AT_MOST));

final int targtetHeight = v.getMeasuredHeight();

v.getLayoutParams().height = 0;

v.setVisibility(View.VISIBLE);

Animation a = new Animation()

{

@Override

protected void applyTransformation(float interpolatedTime, Transformation t) {

v.getLayoutParams().height = interpolatedTime == 1

? LayoutParams.WRAP_CONTENT

: (int)(targtetHeight * interpolatedTime);

Log.i("CHEOK", "E v.getLayoutParams().height = " + v.getLayoutParams().height);

v.requestLayout();

}

將打印以下日志消息.

10-09 12:29:58.808: I/CHEOK(7874): E v.getLayoutParams().height = 0

10-09 12:29:58.808: I/CHEOK(7874): E v.getLayoutParams().height = 0

10-09 12:29:58.918: I/CHEOK(7874): E v.getLayoutParams().height = 11

10-09 12:29:59.015: I/CHEOK(7874): E v.getLayoutParams().height = 35

10-09 12:29:59.117: I/CHEOK(7874): E v.getLayoutParams().height = 64

10-09 12:29:59.215: I/CHEOK(7874): E v.getLayoutParams().height = 85

10-09 12:29:59.316: I/CHEOK(7874): E v.getLayoutParams().height = -2

10-09 12:29:59.406: I/CHEOK(7874): E v.getLayoutParams().height = -2

新的高度每100ms發生一次.所以動畫的FPS大約是10fps

我想看看什么是理想的動畫幀率.我刪除v.requestLayout();.我得到以下記錄.

10-09 12:32:06.547: I/CHEOK(8926): E v.getLayoutParams().height = 0

10-09 12:32:06.562: I/CHEOK(8926): E v.getLayoutParams().height = 0

10-09 12:32:06.605: I/CHEOK(8926): E v.getLayoutParams().height = 4

10-09 12:32:06.625: I/CHEOK(8926): E v.getLayoutParams().height = 7

10-09 12:32:06.644: I/CHEOK(8926): E v.getLayoutParams().height = 10

10-09 12:32:06.664: I/CHEOK(8926): E v.getLayoutParams().height = 14

10-09 12:32:06.679: I/CHEOK(8926): E v.getLayoutParams().height = 18

10-09 12:32:06.699: I/CHEOK(8926): E v.getLayoutParams().height = 22

10-09 12:32:06.715: I/CHEOK(8926): E v.getLayoutParams().height = 27

10-09 12:32:06.734: I/CHEOK(8926): E v.getLayoutParams().height = 32

10-09 12:32:06.750: I/CHEOK(8926): E v.getLayoutParams().height = 37

10-09 12:32:06.769: I/CHEOK(8926): E v.getLayoutParams().height = 42

10-09 12:32:06.785: I/CHEOK(8926): E v.getLayoutParams().height = 47

10-09 12:32:06.804: I/CHEOK(8926): E v.getLayoutParams().height = 52

10-09 12:32:06.828: I/CHEOK(8926): E v.getLayoutParams().height = 59

10-09 12:32:06.840: I/CHEOK(8926): E v.getLayoutParams().height = 62

10-09 12:32:06.863: I/CHEOK(8926): E v.getLayoutParams().height = 67

10-09 12:32:06.879: I/CHEOK(8926): E v.getLayoutParams().height = 71

10-09 12:32:06.894: I/CHEOK(8926): E v.getLayoutParams().height = 75

10-09 12:32:06.910: I/CHEOK(8926): E v.getLayoutParams().height = 79

10-09 12:32:06.929: I/CHEOK(8926): E v.getLayoutParams().height = 82

10-09 12:32:06.945: I/CHEOK(8926): E v.getLayoutParams().height = 85

10-09 12:32:06.965: I/CHEOK(8926): E v.getLayoutParams().height = 88

10-09 12:32:06.984: I/CHEOK(8926): E v.getLayoutParams().height = 89

10-09 12:32:07.000: I/CHEOK(8926): E v.getLayoutParams().height = 91

10-09 12:32:07.019: I/CHEOK(8926): E v.getLayoutParams().height = 91

10-09 12:32:07.039: I/CHEOK(8926): E v.getLayoutParams().height = -2

10-09 12:32:07.054: I/CHEOK(8926): E v.getLayoutParams().height = -2

每約20ms出現新的高度.所以動畫的FPS大概是50fps

當然,我不能刪除requestLayout,因為UI不會在屏幕上更新.

我在想,有沒有什么改進可以做到,實現動畫FPS關閉到50fps?我看到一些商業產品具有平滑的Expand / collapse示例.所以,我認為這是可以實現的.就這樣,我不知道究竟如何.

我的布局代碼如下:

android:clickable="true"

android:id="@+id/chart_linear_layout"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="10dp"

android:layout_marginLeft="10dp"

android:layout_marginRight="10dp"

android:background="@drawable/dummy"

android:orientation="vertical">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_margin="10dp"

android:orientation="horizontal">

android:layout_width="0dp"

android:width="0dp"

android:layout_weight="0.6"

android:layout_height="wrap_content"

android:gravity="left"

android:textSize="20sp"

android:textColor="#ff000000"

android:text="Summary chart" />

android:id="@+id/chart_price_text_view"

android:layout_width="0dp"

android:width="0dp"

android:layout_weight="0.4"

android:layout_height="wrap_content"

android:gravity="right"

android:textSize="20sp"

android:textColor="#ffF76D3C"

android:text="$2.99" />

android:visibility="gone"

android:id="@+id/chart_description_text_view"

android:layout_marginLeft="10dp"

android:layout_marginRight="10dp"

android:layout_marginBottom="10dp"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/currency_exchange_description"

android:textColor="#ff626262"

android:textSize="15sp" />

我希望在chart_description_text_view上執行流暢的動畫

折疊(應用程式啟動期間)

擴展(當用戶點擊它時)

總結

以上是生活随笔為你收集整理的Android自动伸展动画,android – 如何实现平滑的展开/折叠动画的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。