A. android逐幀動畫如何讓動畫停在最後一張
在工程res文件目錄下新建一個anim文件夾,在裡面新建一個start_animation.xml格式文件,此文件用來定義動畫播放圖片的順序及每一張圖片顯示停留時間。
在這里增加android:oneshot="true"屬性, 會停留在最後一幀
B. android中如何銷毀Animation對象
1、檢查animation, 是否setfillafter,是否在監聽到動畫結束後cancel掉了動畫 2、不使用bringtofront改變Z軸順序, 在布局中把button最後添加進去, 這樣button在最上方
C. Android 中 Animation 怎麼停止
最近遇到一個需求,通過在GridView上改變焦點,並且GridView上每個item有一個隱藏的層,獲取焦點之後,通過AlphaAnimation顯示出來。
發現當ration大於500時,快速移動焦點,每個item都會播放一次動畫。
需求是焦點移動到別的item,當前item的動畫停止。
通過測試發現,調用Animation中的cancel()方法不能實現這樣的效果。
我使用了以下方法,均未成功:
1.調用Animation的cancel()方法;
2.將播放動畫的view invisible。
3.將正在播放的動畫置null。
在國外的一個論壇中,找到了結果。
調用view中的clearAnimation()方法,即可消除view上正在運行的動畫效果。
D. Android里控制項使用Animation動畫效果後 如何獲取其 最後停留的動畫效果的位置
有個監聽動畫的介面,你看看可以用的上不
anim.setAnimationListener(new
AnimationListener()
{
@Override
public
void
onAnimationStart(Animation
animation)
{
}
@Override
public
void
onAnimationRepeat(Animation
animation)
{
}
@Override
public
void
onAnimationEnd(Animation
animation)
{
}
});
E. android兩個animation無限循環怎麼做
據我所知,想直接給AnimationSet設置重復,是不行的。不過你可以這樣來:
final int transDuration = 2000;
final int alphaDuration = 1000;
AnimationSet set = new AnimationSet(false);
set.setRepeatMode(Animation.RESTART);
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, 300);
translateAnimation.setInterpolator(new Interpolator() {
@Override
public float getInterpolation(float arg0) {
float ret = arg0 / (1.0f * transDuration / (transDuration + alphaDuration));
return ret < 1 ? ret : 1;
}
});
translateAnimation.setRepeatCount(Animation.INFINITE);
translateAnimation.setDuration(transDuration + alphaDuration);
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
alphaAnimation.setRepeatCount(Animation.INFINITE);
alphaAnimation.setDuration(alphaDuration);
alphaAnimation.setStartOffset(transDuration);
set.addAnimation(translateAnimation);
set.addAnimation(alphaAnimation);
view.startAnimation(set);
或者像其他所說的,通過在一個動畫結束後開始另外一個動畫的方式。
F. android ImageView設置Animation之後,點擊不執行
img.startAnimation(animation);
具體要看看源碼了,不過這個方法好像萬能的
setAnimation就不確定,細心點終會發現問題
G. android 怎麼將activity 退出的動畫效果關閉
在AndroidMenifest.xml文件裡面的Activity聲明中,增加自己的Theme聲明,如下:
<activity
android:name=".MyOrderListServiceActivity"
android:theme="@style/MyTheme"
>
在values的style.xml文件里 聲明 一個style,起名為MyTheme,注意這裡面有我自定義的東西,涉及到動畫的聲明,就只有 <item name="android:windowAnimationStyle">@style/AnimationActivity</item>這一項。
<style name="MyTheme">
<!-- float_box為我們定義的窗口背景 -->
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowAnimationStyle">@style/AnimationActivity</item>
</style>
在values的style.xml文件里 聲明 一個style,起名為AnimationActivity,沒錯就是上面的MyTheme中的windowAnimationStyle的實現,如下:
<style name="AnimationActivity" mce_bogus="1" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/slide_in_bottom</item>
<item name="android:activityOpenExitAnimation">@anim/slide_out_bottom</item>
<item name="android:activityCloseEnterAnimation">@anim/slide_in_bottom</item>
<item name="android:activityCloseExitAnimation">@anim/slide_out_bottom</item>
</style>
添加完以上的內容,有的機器雖然進入的動畫是可用的,但是退出的動畫無效,還需要在你的Activity中添加一些代碼,保證animation的完美運行
添加全局變數
protected int activityCloseEnterAnimation;
protected int activityCloseExitAnimation
在OnCreate裡面添加如下代碼:
TypedArray activityStyle = getTheme().obtainStyledAttributes(new int[] {android.R.attr.windowAnimationStyle});
int windowAnimationStyleResId = activityStyle.getResourceId(0, 0);
activityStyle.recycle();
activityStyle = getTheme().obtainStyledAttributes(windowAnimationStyleResId, new int[] {android.R.attr.activityCloseEnterAnimation, android.R.attr.activityCloseExitAnimation});
activityCloseEnterAnimation = activityStyle.getResourceId(0, 0);
activityCloseExitAnimation = activityStyle.getResourceId(1, 0);
activityStyle.recycle();
在你的程序finish之前,需要調用如下代碼:
overridePendingTransition(activityCloseEnterAnimation, activityCloseExitAnimation);
我調用的例子如下:
@Override
public void finish() {
Log.i(TAG, "finish");
super.finish();
overridePendingTransition(activityCloseEnterAnimation, activityCloseExitAnimation);
}
這樣就可以了。
H. android AnimationDrawable 動畫 stop時 怎樣停留在第一幀畫面
view.selectDrawable(0);
I. Android中如何使用動畫實現文字從右邊平移過來之後,再往右回退一點,然後停止
可以在布局裡面寫動畫,先是從右往左平移,然後另一個是從左往右平移,可以設置平移的時間。在代碼中找到你的textview控制項,然後設置textview的動畫是你剛剛寫的布局裡面的動畫,再寫一句開始動畫的代碼就可以了。主要就是布局裡面寫動畫的效果,代碼裡面找到這個動畫並且應用到具體的控制項。需要代碼的話再找我,應該很好理解吧。
J. 在android中,某圖片使用rotateanimation動畫,如何繞著這個圖片的左下角的進行旋轉
1、定義一個ImageView
定義一個ImageView是為了裝載圖片,其中的圖片將被rotate用來進行旋轉,其他View亦可。
資源文件為
復制代碼代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/infoOperating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/operating"
android:scaleType="center">
</ImageView>
</LinearLayout>
其中的android:src為圖片內容,可使用附件中的圖片。
java代碼為
復制代碼代碼如下:
ImageView infoOperatingIV = (ImageView)findViewById(R.id.infoOperating);
2、定義rotate旋轉效果
在res/anim文件夾下新建tip.xml文件,內容如下
復制代碼代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:fromDegrees="0"
android:toDegrees="359"
android:ration="500"
android:repeatCount="-1"
android:pivotX="50%"
android:pivotY="50%" />
</set>
含義表示從0到359度開始循環旋轉,0-359(若設置成360在停止時會出現停頓現象)度旋轉所用時間為500ms,旋轉中心距離view的左頂點為50%距離,距離view的上邊緣為50%距離,即正中心,具體每個含義見下面的具體屬性介紹。
java代碼為
復制代碼代碼如下:
Animation operatingAnim = AnimationUtils.loadAnimation(this, R.anim.tip);
LinearInterpolator lin = new LinearInterpolator();
operatingAnim.setInterpolator(lin);
setInterpolator表示設置旋轉速率。LinearInterpolator為勻速效果,Accelerateinterpolator為加速效果、DecelerateInterpolator為減速效果,具體可見下面android:interpolator的介紹。
a. 關於其中的屬性意義如下(紅色部分加以注意):
android:fromDegrees 起始的角度度數
android:toDegrees 結束的角度度數,負數表示逆時針,正數表示順時針。如10圈則比android:fromDegrees大3600即可
android:pivotX 旋轉中心的X坐標
浮點數或是百分比。浮點數表示相對於Object的左邊緣,如5; 百分比表示相對於Object的左邊緣,如5%; 另一種百分比表示相對於父容器的左邊緣,如5%p; 一般設置為50%表示在Object中心
android:pivotY 旋轉中心的Y坐標
浮點數或是百分比。浮點數表示相對於Object的上邊緣,如5; 百分比表示相對於Object的上邊緣,如5%; 另一種百分比表示相對於父容器的上邊緣,如5%p; 一般設置為50%表示在Object中心
android:ration 表示從android:fromDegrees轉動到android:toDegrees所花費的時間,單位為毫秒。可以用來計算速度。
android:interpolator表示變化率,但不是運行速度。一個插補屬性,可以將動畫效果設置為加速,減速,反復,反彈等。默認為開始和結束慢中間快,
android:startOffset 在調用start函數之後等待開始運行的時間,單位為毫秒,若為10,表示10ms後開始運行
android:repeatCount 重復的次數,默認為0,必須是int,可以為-1表示不停止
android:repeatMode 重復的模式,默認為restart,即重頭開始重新運行,可以為reverse即從結束開始向前重新運行。在android:repeatCount大於0或為infinite時生效
android:detachWallpaper 表示是否在壁紙上運行
android:zAdjustment 表示被animated的內容在運行時在z軸上的位置,默認為normal。
normal保持內容當前的z軸順序
top運行時在最頂層顯示
bottom運行時在最底層顯示
b. 運行速度
運行速度為運行時間(android:ration)除以運行角度差(android:toDegrees-android:fromDegrees),比如android:ration為1000,android:toDegrees為360,android:fromDegrees為0就表示1秒轉1圈。
c. 循環運行
復制代碼代碼如下:
android:fromDegrees="0"
android:toDegrees="360"
android:repeatCount="-1"
android:repeatCount="-1"即表示循環運行,配合上android:fromDegrees="0" android:toDegrees="360"表示不間斷
3、開始和停止旋轉
在操作開始之前調用
復制代碼代碼如下:
if (operatingAnim != null) {
infoOperatingIV.startAnimation(operatingAnim);
}
在操作完成時調用
復制代碼代碼如下:
infoOperatingIV.clearAnimation();
許多朋友不知道如何停止旋轉animation,所以強制設置rotate轉動多少圈表示操作,但卻無法與操作實際的進度匹配上,實際上只要如上代碼所示清除animation即可。
其他:
對於上面的轉動在橫屏(被設置為了不重繪activity)時會出現問題,即旋轉中心偏移,導致動畫旋轉偏離原旋轉中心。解決如下
復制代碼代碼如下:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (operatingAnim != null && infoOperatingIV != null && operatingAnim.hasStarted()) {
infoOperatingIV.clearAnimation();
infoOperatingIV.startAnimation(operatingAnim);
}
}