編輯:Android開發教程
前段時間,我們做了一下Android的幾個動畫(http://blog.csdn.net/qq_25193681/article/details/51777248),對Android的補間動畫有了一定的了解。但是在Android的3.0之後,google又提出了屬性動畫的這樣一個框架,他可以更好的幫助我們實現更豐富的動畫效果。所以為了跟上技術的步伐,今天就聊一聊屬性動畫。
這一次的需求是這樣的:當點擊一個View的時候,顯示下面隱藏的一個View,要實現這個功能,需要將V iew的visibility屬性設置gone為visible即可,但是這個過程是一瞬間的,並不能實現我們要的效果。所以,屬性動畫是個不錯的方案。
先把效果貼上
第一個:
第二個:
前面的這個是隱藏著,後面這個是顯示的。當點擊這個箭頭的時候,來切換顯示或者隱藏,
現在開始編碼:
布局文件如下
= = = = = = > = = = = > = = = = = = = /> > = = = = = > = = = = = = /> = = = = = /> > = = = = = = > = = = = = = /> = = = = = /> > = = = = = = > = = = = = /> > >
這裡面代碼並不多,也很簡單,三個線性布局,裡面裝載著各自的控件,並且還設置了ID。按鈕是一個線性布局,采用了onClick自身的點擊事件。接下來,當點擊了這個線性布局的時候,需要隱藏的控件最終到達一個高度,這個就是我們的目標值,只需要通過布局中的dp轉換成像素就行了。
+ );
這裡是120就是我們布局裡面定義的高度。
然後給這個過程增加一個動畫效果。
ValueAnimator animator = ValueAnimator.ofInt(start, end); animator.addUpdateListener( AnimatorUpdateListener() { @Override (ValueAnimator arg0) { = () arg0.getAnimatedValue(); ViewGroup.LayoutParams layoutParams = v.getLayoutParams(); layoutParams.height = ; v.setLayoutParams(layoutParams); } });
通過這樣一個簡單的ValueAnimator ,就可以很方便的實現顯示和隱藏的動畫效果了。
下面是完整的代碼。
android.animation.Animator; android.animation.AnimatorListenerAdapter; android.animation.ValueAnimator; android.animation.ValueAnimator.AnimatorUpdateListener; android.os.Bundle; android.support.v7.app.ActionBarActivity; android.view.View; android.view.ViewGroup; android.view.Window; android.view.animation.Animation; android.view.animation.RotateAnimation; android.widget.ImageView; android.widget.LinearLayout; { LinearLayout mHiddenLayout; mDensity; mHiddenViewMeasuredHeight; ImageView mIv; (Bundle savedInstanceState) { .onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); //URL:http://www.bianceng.cn/OS/extra/201608/50381.htm mHiddenLayout = (LinearLayout) findViewById(R.id.linear_hidden); mIv = (ImageView) findViewById(R.id.my_iv); mDensity = getResources().getDisplayMetrics().density; mHiddenViewMeasuredHeight = () (mDensity * + ); } (View v) { (mHiddenLayout.getVisibility() == View.GONE) { animateOpen(mHiddenLayout); animationIvOpen(); } { animateClose(mHiddenLayout); animationIvClose(); } } (View v) { v.setVisibility(View.VISIBLE); ValueAnimator animator = createDropAnimator(v, , mHiddenViewMeasuredHeight); animator.start(); } () { RotateAnimation animation = RotateAnimation(, , Animation.RELATIVE_TO_SELF, f, Animation.RELATIVE_TO_SELF, f); animation.setFillAfter(); animation.setDuration(); mIv.startAnimation(animation); } () { RotateAnimation animation = RotateAnimation(, , Animation.RELATIVE_TO_SELF, f, Animation.RELATIVE_TO_SELF, f); animation.setFillAfter(); animation.setDuration(); mIv.startAnimation(animation); } ( View view) { origHeight = view.getHeight(); ValueAnimator animator = createDropAnimator(view, origHeight, ); animator.addListener( AnimatorListenerAdapter() { (Animator animation) { view.setVisibility(View.GONE); } }); animator.start(); } ValueAnimator ( View v, start, end) { ValueAnimator animator = ValueAnimator.ofInt(start, end); animator.addUpdateListener( AnimatorUpdateListener() { (ValueAnimator arg0) { value = () arg0.getAnimatedValue(); ViewGroup.LayoutParams layoutParams = v.getLayoutParams(); layoutParams.height = value; v.setLayoutParams(layoutParams); } }); animator; } }
一、生產環境1.經驗:1) 保證A.你的PC在intranet和internet上正常使得Lync 2013B.你的iphone,ipad,andro
ScrollView是一種特殊的FrameLayout,使用ScrollView可以使用戶能夠滾動一個包含views的列表,這樣 做的話,就可以利用比物理顯示區域更大的空
本程序實現了使用Dom方法從網絡端解析xml文件,展示在列表,並實現點擊進入相關頁面。首先我們創建一個類,用來實現http請求和xml文件節點的獲取,這裡的http請求很
一、Service簡介Service是android 系統中的四大組件之一(Activity、Service、BroadcastReceiver、 ContentProv