repeatcountandroid
㈠ android中補間動畫怎樣循環執行
在代碼中,可以這樣設置:
animation.setRepeatMode(Animation.REVERSE);
animation.setRepeatCount(Animation.INFINITE);
在xml中可以這樣設置:
android:repeatMode="restart"
android:repeatCount="infinite"
㈡ android 怎麼實現沿控制項方向做位移動畫
在Android開發,我們會經常使用到位移動畫,一般情況下位移動畫有兩種實現方式,一種是直接通過java代碼去實現,另外一種是通過配置文件實現動畫,下面是兩種動畫的基本是使用方法:
純Java代碼實現:
[java] view plain
//創建漸變動畫
Animation animation = new TranslateAnimation(0, 0, 300, 300);
animation.setDuration(1500);
animation.setRepeatCount(1);//動畫的重復次數
animation.setFillAfter(true);//設置為true,動畫轉化結束後被應用
imageView1.startAnimation(animation);//開始動畫
通過配置文件實現:
1、首先要在res目錄下建立一個anim文件,在anim建立一個alpha1.xml文件如下:
[java] view plain
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:ration="1500"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="200"
android:toYDelta="300"
android:repeatCount="3"
android:interpolator="@android:anim/cycle_interpolator"
android:repeatMode="reverse"
/>
</set>
2、載入動畫
[java] view plain
Animation animation = AnimationUtils.loadAnimation(this, R.anim.translate);
imageView1.startAnimation(animation);//開始動畫
案例下載地址:http://download.csdn.net/detail/u013043346/9374204
㈢ Android 中的動畫有哪幾類,它們的特點和區別是什麼
Android 中的動畫有三類,它們的特點和區別如下:
###幀動畫
> 一張張圖片不斷的切換,形成動畫效果
* 在drawable目錄下定義xml文件,子節點為animation-list,在這里定義要顯示的圖片和每張圖片的顯示時長
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
<item android:drawable="@drawable/g1" android:ration="200" />
<item android:drawable="@drawable/g2" android:ration="200" />
<item android:drawable="@drawable/g3" android:ration="200" />
</animation-list>
* 在屏幕上播放幀動畫
ImageView iv = (ImageView) findViewById(R.id.iv);
//把動畫文件設置為imageView的背景
iv.setBackgroundResource(R.drawable.animations);
AnimationDrawable ad = (AnimationDrawable) iv.getBackground();
//播放動畫
ad.start();
###補間動畫
* 原形態變成新形態時為了過渡變形過程,生成的動畫就叫補間動畫
* 位移、旋轉、縮放、透明
#####位移:
* 參數10指的是X的起點坐標,但不是指屏幕x坐標為10的位置,而是imageview的 真實X + 10
* 參數150指的是X的終點坐標,它的值是imageview的 真實X + 150
//創建為位移動畫對象,設置動畫的初始位置和結束位置
TranslateAnimation ta = new TranslateAnimation(10, 150, 20, 140);
* x坐標的起點位置,如果相對於自己,傳0.5f,那麼起點坐標就是 真實X + 0.5 * iv寬度
* x坐標的終點位置,如果傳入2,那麼終點坐標就是 真實X + 2 * iv的寬度
* y坐標的起點位置,如果傳入0.5f,那麼起點坐標就是 真實Y + 0.5 * iv高度
* y坐標的終點位置,如果傳入2,那麼終點坐標就是 真實Y + 2 * iv高度
TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 2, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 2)
* 動畫播放相關的設置
//設置動畫持續時間
ta.setDuration(2000);
//動畫重復播放的次數
ta.setRepeatCount(1);
//動畫重復播放的模式
ta.setRepeatMode(Animation.REVERSE);
//動畫播放完畢後,組件停留在動畫結束的位置上
ta.setFillAfter(true);
//播放動畫
iv.startAnimation(ta);
#####縮放:
* 參數0.1f表示動畫的起始寬度是真實寬度的0.1倍
* 參數4表示動畫的結束寬度是真實寬度的4倍
* 縮放的中心點在iv左上角
ScaleAnimation sa = new ScaleAnimation(0.1f, 4, 0.1f, 4);
* 參數0.1f和4意義與上面相同
* 改變縮放的中心點:傳入的兩個0.5f,類型都是相對於自己,這兩個參數改變了縮放的中心點
* 中心點x坐標 = 真實X + 0.5 * iv寬度
* 中心點Y坐標 = 真實Y + 0.5 * iv高度
ScaleAnimation sa = new ScaleAnimation(0.1f, 4, 0.1f, 4, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
#####透明:
* 0為完全透明,1為完全不透明
AlphaAnimation aa = new AlphaAnimation(0, 0.5f);
#####旋轉:
* 20表示動畫開始時的iv的角度
* 360表示動畫結束時iv的角度
* 默認旋轉的圓心在iv左上角
RotateAnimation ra = new RotateAnimation(20, 360);
* 20,360的意義和上面一樣
* 指定圓心坐標,相對於自己,值傳入0.5,那麼圓心的x坐標:真實X + iv寬度 * 0.5
* 圓心的Y坐標:真實Y + iv高度 * 0.5
RotateAnimation ra = new RotateAnimation(20, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
#####所有動畫一起飛
//創建動畫集合
AnimationSet set = new AnimationSet(false);
//往集合中添加動畫
set.addAnimation(aa);
set.addAnimation(sa);
set.addAnimation(ra);
iv.startAnimation(set);
---
#屬性動畫
* 補間動畫,只是一個動畫效果,組件其實還在原來的位置上,xy沒有改變
###位移:
* 第一個參數target指定要顯示動畫的組件
* 第二個參數propertyName指定要改變組件的哪個屬性
* 第三個參數values是可變參數,就是賦予屬性的新的值
* 傳入0,代表x起始坐標:當前x + 0
* 傳入100,代表x終點坐標:當前x + 100
//具有get、set方法的成員變數就稱為屬性
ObjectAnimator oa = ObjectAnimator.ofFloat(bt, "translationX", 0, 100) ;
###縮放:
* 第三個參數指定縮放的比例
* 0.1是從原本高度的十分之一開始
* 2是到原本高度的2倍結束
ObjectAnimator oa = ObjectAnimator.ofFloat(bt, "scaleY", 0.1f, 2);
###透明:
* 透明度,0是完全透明,1是完全不透明
ObjectAnimator oa = ObjectAnimator.ofFloat(bt, "alpha", 0.1f, 1);
###旋轉
* rotation指定是順時針旋轉
* 20是起始角度
* 270是結束角度
ObjectAnimator oa = ObjectAnimator.ofFloat(bt, "rotation", 20, 270);
* 屬性指定為rotationX是豎直翻轉
* 屬性指定為rotationY是水平翻轉
ObjectAnimator oa = ObjectAnimator.ofFloat(bt, "rotationY", 20, 180);
###可變參數
* 第三個參數可變參數可以傳入多個參數,可以實現往回位移(旋轉、縮放、透明)
ObjectAnimator oa = ObjectAnimator.ofFloat(bt, "translationX", 0, 70, 30, 100) ;
㈣ android標題欄透明度漸變
<alpha>標簽為alpha透明度節點
android:fromAlpha="1.0" 設置動畫起始透明度為1.0 表示完全不透明
android:toAlpha="0.0"設置動畫結束透明度為0.0 表示完全透明
也就是說alpha的取值范圍為0.0 - 1.0 之間
這個動畫布局設置動畫從完全不透明漸變到完全透明。
view plain
<?xml
version="1.0"
encoding="utf-8"?>
<alpha
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:repeatCount="infinite"
android:ration="2000">
</alpha>
代碼實現
view plain
import android.app.Activity;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
public
class AlphaActivity extends Activity {
/**顯示動畫的ImageView**/
ImageView mImageView = null;
/**透明動畫**/
Animation mAnimation = null;
@Override
public
void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.translate);
/**拿到ImageView對象**/
mImageView = (ImageView)findViewById(R.id.imageView);
/**載入透明動畫**/
mAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha);
/**播放透明動畫**/
mImageView.startAnimation(mAnimation);
}
}
㈤ 安卓開發旋轉動畫實現的時候為什麼會刷新界面
Android 平台提供了兩類動畫,一類是 Tween 動畫,即通過對場景里的對象不斷做圖像變換(平移、縮放、旋轉)產生動畫效果;第二類是 Frame 動畫,即順序播放事先做好的圖像,跟電影類似。本文分析 Tween動畫的rotate實現旋轉效果。 在新浪微博客戶端中各個操作進行中時activity的右上角都會有個不停旋轉的圖標,類似刷新的效果,給用戶以操作中的提示。這種非模態的提示方式推薦使用,那麼下面就分享下如何實現這種效果吧 1、定義一個ImageView 定義一個ImageView是為了裝載圖片,其中的圖片將被rotate用來進行旋轉,其他View亦可。 資源文件為 Java代碼 xmlns:android="schemas/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> android:id="@+id/infoOperating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/operating" android:scaleType="center"> 其中的android:src為圖片內容,可使用附件中的圖片。 java代碼為 Java代碼 ImageView infoOperatingIV = (ImageView)findViewById(R.id.infoOperating); 2、定義rotate旋轉效果 在res/anim文件夾下新建tip.xml文件,內容如下 Java代碼 android:fromDegrees="0" android:toDegrees="359" android:ration="500" android:repeatCount="-1" android:pivotX="50%" android:pivotY="50%" /> 含義表示從0到359度開始循環旋轉,0-359(若設置成360在停止時會出現停頓現象)度旋轉所用時間為500ms,旋轉中心距離view的左頂點為50%距離,距離view的上邊緣為50%距離,即正中心,具體每個含義見下面的具體屬性介紹。 java代碼為 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. 循環運行 Java代碼 android:fromDegrees="0" android:toDegrees="360" android:repeatCount="-1" android:repeatCount="-1"即表示循環運行,配合上android:fromDegrees="0" android:toDegrees="360"表示不間斷 3、開始和停止旋轉 在操作開始之前調用 Java代碼 if (operatingAnim != null) { infoOperatingIV.startAnimation(operatingAnim); } 在操作完成時調用 Java代碼 infoOperatingIV.clearAnimation(); 許多朋友不知道如何停止旋轉animation,所以強制設置rotate轉動多少圈表示操作,但卻無法與操作實際的進度匹配上,實際上只要如上代碼所示清除animation即可。 其他: 對於上面的轉動在橫屏(被設置為了不重繪activity)時會出現問題,即旋轉中心偏移,導致動畫旋轉偏離原旋轉中心。解決如下 Java代碼 @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (operatingAnim != null && infoOperatingIV != null && operatingAnim.hasStarted()) { infoOperatingIV.clearAnimation(); infoOperatingIV.startAnimation(operatingAnim); } }
㈥ android開發中如何旋轉布局
樓主你好,這個可以通過動畫來達到這個效果的,代碼如下:
只要把您的layout對象傳進去就行了
public void showAnimation(View mView)
{
final float centerX = mView.getWidth() / 2.0f;
final float centerY = mView.getHeight() / 2.0f;
//這個是設置需要旋轉的角度,我設置的是180度
RotateAnimation rotateAnimation = new RotateAnimation(0, 180, centerX,
centerY);
//這個是設置通話時間的
rotateAnimation.setDuration(1000*3);
rotateAnimation.setFillAfter(true);
mView.startAnimation(rotateAnimation);
}
㈦ android如何判斷當前View上有幾個手指在觸摸
事件在於UI互動式發生的,點擊一個按鍵時,可能就已經除非好幾個事件,例如點擊數字鍵「0」,會涉及到按下事件,和一個彈起(松開)事件,在android中還可能涉及到觸摸屏事件,所以在android系統中,事件是作為常用的功能之一;
在android下,事件的發生是在監聽器下進行,android系統可以響應按鍵事件和觸摸屏事件,事件說明如下:
l onClick(View v) 一個普通的點擊按鈕事件;
l boolean onKeyMultiple(int keyCode,int repeatCount,KeyEvent event)用於在多個事件連續時發生,用於按鍵重復,必須重載@Override實現;
l boolean onKeyDown(int keyCode,KeyEvent event) 用於在按鍵進行按下時發生;
l boolean onKeyUp(int keyCode,KeyEvent event) 用於在按鍵進行釋放時發生;
l onTouchEvent(MotionEvent event)觸摸屏事件,當在觸摸屏上有動作時發生。
㈧ Android屬性動畫ObjectAnimator的setRepeatCount如何設置為無數次呢
「畢竟要使用的話還會有頁面刷新,數據更新,伺服器交互的問題,很容易就導致各種UI問題了。」不如自定義ObjectAnimator,然後在Activity跳轉的時候調用overridePendingTransition。
㈨ android動畫效果設置為animationSet.setRepeatCount(4) ,實際卻沒有重復4次
要為translateAnimation調用下面兩個方法,setFillAfter (true);setFillEnabled(true);。setFillAfter (true);方法用於設置一個動畫效果執行完畢後,View對象保留在終止的位置。該方法的執行,需要首先通過setFillEnabled方法使能填充效果,否則設置無效。但是沒有執行4次還不是很清楚怎麼回事,不能幫上你不好意思哈
㈩ 如何高效學習Android動畫
Android動畫初步
動畫(Animation)在我們日常的Android開發工作當中使用得較為頻繁,尤其對於Android游戲這個動畫的集合體,掌握動畫開發的重要性毋庸置疑。同樣的,在Android應用開發中我們也經常使用動畫效果來提升APP用戶體驗,比如應用中的圖片的旋轉,頁面和頁面之間的淡入淡出、左右漸入漸出切換效果等等。
動畫的分類
Android FrameWork向開發人員提供了豐富的API用於實現各種各樣的動畫效果,而若要對動畫分類,一般可將Android動畫分為以下兩類的動畫系統:
View Animation
View Animation動畫系統又可以分類成Tween Animation 和Frame Animation:
Tween Animation
Tween Animation是Android系統比較老的一種動畫系統,它的特點是通過對場景里的對象不斷做圖像變換(漸變、平移、縮放、旋轉)產生動畫效果,且這種動畫只適用於View對象。
Frame Animation
Frame Animation也是常用到的動畫,它的原理比較簡單,就是將一系列准備好的圖片按照順序播放,形成動畫效果。
Property Animation
Property Animation(屬性動畫)是在Android3.0(API 11)之後引入的一種動畫系統,該動畫提供了比View Animation更加豐富、強大和靈活的功能,Android官方推薦開發人員使用該動畫系統來實現動畫。Property Animation的特點是動態地改變對象的屬性從而達到動畫效果。該動畫實現使用於包括View在內的任何對象。
Tween Animation
了解到Tween Animation是Android中比較老的一種動畫系統,且其只能實現對View對象動畫設置,不過其雖然沒有Property Aniamtion功能那麼強大和靈活,但是使用Tween Animation依然能完成日常大部分的開發需求。靈活地掌握Tween Animation的使用方法,十分有必要。那Tween Animation實現View的動畫,一般分為以下幾種效果:
Alpha:漸變透明動畫效果;
Scale:漸變尺寸伸縮動畫效果;
Translate:位置位移動畫效果;
Rotate:位置旋轉動畫效果。
接下來通過實例來一一學習如何實現以上幾種動畫效果,實現Tween Animation分為xml實現和代碼實現,下面會分別使用這兩種方式來實現上面的的幾種動畫效果。首先使用xml方式來實現View的Alpha漸變透明動畫效果,在項目目錄結構中創建res/anim文件夾,然後在文件夾中創建view_animation_alpha.xml文件,文件中的代碼如下:
[html] view plain
<!--
* android:interpolator:修飾動畫效果,定義動畫的變化率,可以使存在的動畫效果accelerated(加速),
* decelerated(減速),repeated(重復),bounced(彈跳)等。
* android:fromAlpha="0.0":設置動畫開始時控制項的透明度,0.0為透明,控制項不顯示,1.0為不透明,控制項全部顯示
* android:toAlpha="1.0":設置動畫結束時的控制項的透明度
* android:ration="2500":設置每一次動畫持續的時間值
* android:repeatCount="5":設置動畫重復的次數
* android:repeatMode="reverse":設置動畫重復的模式,reverse為0.0 -> 1.0 -> 0.0,動畫反復執行;
* restart為0.0 -> 1.0, 0.0 -> 1.0,動畫每次都重新開始執行
-->
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:ration="2500"
android:repeatCount="5"
android:repeatMode="reverse"
/>
xml文件中的屬性在代碼中都有詳細的解釋,這里就不重復說明了。定義完XML文件後,然後在代碼中使用AnimationUtils類調用loadAnimation(context, id)方法來載入xml文件,具體代碼如下:
[java] view plain
/**
* xml文件載入圖片漸變(Alpha)動畫
*/
Animation mAnimation = AnimationUtils.loadAnimation(this, R.anim.view_animation_alpha);
上面是使用xml實現Alpha的動畫效果,下面我們來看看如何在代碼中實現Alpha的動畫,很簡單,只需要實例化一個AlphaAnimation對象,然後傳遞相關參數就行,具體代碼如下:
[java] view plain
/**
* 代碼創建圖片漸變(Alpha)動畫
* 實例化AlphaAnimation對象:
* mAnimation = new AlphaAnimation(fromAlpha, toAlpha);
* fromAlpha:設置動畫開始時控制項的透明度,0.0為透明,控制項不顯示,1.0為不透明,控制項全部顯示
* toAlpha:設置動畫結束時的控制項的透明度
*/
Animation mAnimation = new AlphaAnimation(0.0f, 1.0f);
分別使用xml和代碼實現Alpha動畫後,最後為一個ImageView對象設置創建好的Alpha動畫,ImageView對象只需要調用startAnimation(Animation animation)方法,將剛剛創建好的alpha動畫對象作為參數添加傳進去搞定,具體代碼如下:
[java] view plain
ImageView mImageView = (ImageView)findViewById(R.id.view_animation_imageview);
//設置控制項開始執行動畫
mImageView.startAnimation(mAnimation);