編輯:關於Android編程
屬性動畫系統允許動畫View對象並提供很多比view動畫系統更高級的功能。view動畫系統通過改變繪制方式來變換View對象,view動畫是被view的容器所處理的,因為View本身沒有要操控的屬性。結果就是View被動畫了,但View對象本身並沒有變化。在Android3.0中,新的屬性和相應的getter和setter方法被加入以克服此缺點。
屬性動畫系統可以通過改變View對象的真實屬性來動畫Views。而且,View也會在其屬性改變時自動調用invalidate()方法來刷新屏幕。View類中的能促進屬性動畫能力的的新屬性有:
translationX和translationY:這兩個屬性控制View的位置,它們是View被layout容器所設置的坐標位置的增量。
rotation,rotationX,和rotationY:這些屬性控制著在在2D(rotation屬性)和3D上的旋轉。
scaleX和scaleY:這些屬性控制View的2D縮放。
pivotX和pivotY:這些屬性控制著中心點的位置,旋轉和縮放變化對是圍繞它進行的。默認下,中心點在對象的中心位置。
x和y:這些代表了View在container中的最終位置,它是left和top與translationX和translationY的和。
alpha:代表了View的透明度。1(不透明)是默認值,0表示完全透明(看不見了)。
要動畫一個View對象的屬性,比如它的顏色或旋轉值,你所有需要做的就是創建一個屬性animator 然後指定你想動畫的View屬性。例如:
ObjectAnimator.ofFloat(myView,"rotation", 0f, 360f);
ViewPropertyAnimator提供了一個同時動畫某個View中的多個屬性的簡便方法,只需使用一個Animator對象。它的行為很像ObjectAnimator,因為它修改了真正的view屬性,但是它對於同時動畫多個屬性更在行。另外,使用ViewPropertyAnimator的代碼更加簡潔易懂。下面的代碼片段演示了當同時動畫一個View的x和y屬性時使用多個ObjectAnimator對象、單個ObjectAnimator、和ViewPropertyAnimator的不同。
多個ObjectAnimator 對象
ObjectAnimatoranimX = ObjectAnimator.ofFloat(myView, "x", 50f); ObjectAnimatoranimY = ObjectAnimator.ofFloat(myView, "y", 100f); AnimatorSetanimSetXY = new AnimatorSet(); animSetXY.playTogether(animX,animY); animSetXY.start();
一個ObjectAnimator
PropertyValuesHolderpvhX = PropertyValuesHolder.ofFloat("x", 50f); PropertyValuesHolderpvhY = PropertyValuesHolder.ofFloat("y", 100f); ObjectAnimator.ofPropertyValuesHolder(myView,pvhX, pvyY).start();
ViewPropertyAnimator
myView.animate().x(50f).y(100f);
屬性動畫系統使你能夠使用XML聲明屬性動畫而不用寫代碼。通過在XML中定義動畫,你可以輕易的在多個activity中重用你的動畫,並且可以更容易的修改動畫順序。
為了區分使用了新的屬性動畫API和使用了舊的view動畫框架的文件,從Android3.1開始,你應該將屬性動畫XML文件保存到res/animator/文件夾下(而不是res/anim/)。使用animator時,其文件夾的名字是可選的,但是當你要使用EclipseADT plugin (ADT 11.0.0+)中的layout編輯工具時就是必須的了,因為ADT只去res/animator/文件夾下搜尋屬性動畫資源。
下面的屬性動畫類具有支持XML中聲明的能力:
ValueAnimator-
ObjectAnimator-
要播放此動畫,你必須在你的代碼中inflateXML 資源成一個AnimatorSet對象,然後設置所有動畫的目標對象,再開始動畫。調用setTarget()為所有的子集AnimatorSet設置單個對象很簡單。下面的代碼演示了如何做:
AnimatorSetset = (AnimatorSet) AnimatorInflater.loadAnimator(myContext, R.anim.property_animator); set.setTarget(myObject); set.start();
property_animator是XML文件的名字。
什麼是root,安卓用戶想要對手機進行刪除系統自帶軟件、修改系統某些設置等高權限操作,就要先進行獲取ROOT權限的操作,當然我們要知道,這個操作可能會失敗的
先看看效果圖:這裡介紹的是PullToRefreshGridView的使用方法,和之前的PullToRefreshListView方法如出一轍,因為這個開源項目模塊化很棒
項目下載地址:https://github.com/Aiushtha/android-PictureSelector最早使用android調用系統拍照然後遇到很多空指針等
近期要做一個含有兩個tab切換頁面,兩個頁面有公共的描述信息區域,兩個tab都是listview,可以向上或向下拉動刷新,在頁面中部有一個tab切換區域,向上滑動的時候t