Android 使用屬性動畫實現可折疊布局

2021-06-28 21:25:07 字數 1751 閱讀 1748

剛剛了解屬性動畫,嘗試著寫了乙個可折疊布局,正好也是專案中用到的。

先上效果圖:

使用了乙個自定義布局,很簡單,就是指明了需要改變的屬性,本例中既是布局的高度

public class foldpanellayout extends relativelayout 

private void setpanelheight(int panelheight)

private int getpanelheight()

}

activity**

public class mainactivity extends activity implements onclicklistener 

private void initviews()

private void setdata()

lvtoday.setadapter(new arrayadapter(this,

android.r.layout.******_list_item_1, toadys));

for (int i = 0; i < yestodays.length; i++)

lvyestoday.setadapter(new arrayadapter(this,

android.r.layout.******_list_item_1, yestodays));

for (int i = 0; i < weeks.length; i++)

lvweek.setadapter(new arrayadapter(this,

android.r.layout.******_list_item_1, weeks));

} @override

public void onclick(view v)

break;

} }/**

* 摺疊

* @param expandflag

*/private void collapselayout(int expandflag)

/*** 展開

* @param expandflag

*/private void expandlayout(int expandflag)

private class animupdatelistener implements animatorupdatelistener

@override

public void onanimationupdate(valueanimator arg0)

} private void startanimation(int expandflag, int start, int end)

objectanimator anim = objectanimator.ofint(expandvp, anim_property,

start, end);

anim.setduration(anim_duration);

anim.start();

if (end > start)

}}

算是初步實現效果,不過還是覺得這樣寫的話在activity中的**有點多了,應該放在自定義布局裡面,再定義展開和摺疊的監聽介面在activity裡面呼叫。

android屬性動畫

一 屬性動畫的工作原理,主要有三個步驟 1 計算時間流逝。android動畫系統呼叫,用0 1代表時間的流逝。0表示經過0 的時間,1表示經過100 的時間。2 根據timeinterpolator計算出乙個差值因素。timeinterpolator以第1步流逝的時間作為引數,根據運動規則得出另乙個...

android 屬性動畫

package com.example.objectanimator import android.animation.animator import android.animation.animatorlisteneradapter import android.animation.animato...

Android屬性動畫

android的動畫可以分為三種 補間動畫,幀動畫,屬性動畫。現在很多書籍種大部分都是簡單的描述補間動畫和幀動畫,屬性動畫的概念卻沒有提到,所以今天就全面的分析一下屬性動畫。屬性動畫實際操作的是view的屬性值,因此可以很靈活的實現各種效果,而不侷限於之前的幾種動畫。objectanimator是我...