1) AlphaAnimation
代碼實現AlphaAnimation
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.aa_fragment,container,false);
root.findViewById(R.id.btnAnimateMe).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlphaAnimation aa = new AlphaAnimation(0,1);
aa.setDuration(2000);
v.startAnimation(aa);
}
});
return root;
}
XML實現AlphaAnimation
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.aa_fragment,container,false);
root.findViewById(R.id.btnAnimateMe).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//xml實現alphaAnimation
v.startAnimation(AnimationUtils.loadAnimation(getActivity(),R.anim.aa));
}
});
return root;
}
res/anim/aa.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0"
android:toAlpha="1"
android:duration="1000">
</alpha>
2) RotateAnimation
代碼實現RotateAnimation
root.findViewById(R.id.btnRotateMe).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// RotateAnimation ra = new RotateAnimation(0,360,100,100);//0表示初始旋轉角度,360表示終止旋轉角度,100是z座標像素和y座標像素,
//相對自身旋轉,0.5f 爲百分比,相對於自身的50%
RotateAnimation ra = new RotateAnimation(0,360, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
ra.setDuration(1000);
v.startAnimation(ra);
}
});
XML 實現RotateAnimation
v.startAnimation(AnimationUtils.loadAnimation(getActivity(),R.anim.ra));
R.anim.ra.xml
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:duration="1000"
android:pivotX="50%" //可以直接寫數值,系統會識別爲像素
android:pivotY="50%"/>
3) TranslateAnimation
代碼實現:
root.findViewById(R.id.btnTranslateMe).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TranslateAnimation ta = new TranslateAnimation(0,200,0,0);//0相對於自身位置
ta.setDuration(1000);
v.startAnimation(ta);
}
});
xml實現
root.findViewById(R.id.btnTranslateMe).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TranslateAnimation ta = new TranslateAnimation(0,200,0,0);//0相對於自身位置
// ta.setDuration(1000);
// v.startAnimation(ta);
v.startAnimation(AnimationUtils.loadAnimation(getActivity(),R.anim.ta));
}
});
R.anim.ta.xml:
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="200"
android:toYDelta="0"
android:duration="1000"/>
4) ScaleAnimation
代碼實現:
root.findViewById(R.id.btnScaleMe).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//默認左上角開始縮放,可以設成中心點縮放
ScaleAnimation sa = new ScaleAnimation(0,1,0,1,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
sa.setDuration(1000);
v.startAnimation(sa);
}
});
xml實現:
root.findViewById(R.id.btnScaleMe).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// //默認左上角開始縮放,可以設成中心點縮放
// ScaleAnimation sa = new ScaleAnimation(0,1,0,1,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
// sa.setDuration(1000);
// v.startAnimation(sa);
v.startAnimation(AnimationUtils.loadAnimation(getActivity(),R.anim.sa));
}
});
R.anim.sa.xml
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="0"
android:fromYScale="0"
android:toXScale="1"
android:toYScale="1"
android:pivotY="50%"
android:pivotX="50%"
android:duration="1000"
/>
5) 混合動畫效果(兩個動畫效果同時啓動),也可以設置分別啓動
代碼實現:
root.findViewById(R.id.btnAnimateMe).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AnimationSet as = new AnimationSet(true);
as.setDuration(2000);
AlphaAnimation aa = new AlphaAnimation(0,1);
aa.setDuration(2000);
as.addAnimation(aa);
TranslateAnimation ta = new TranslateAnimation(200,0,200,0);
ta.setDuration(2000);
as.addAnimation(ta);
v.startAnimation(as);
}
});
XML實現
root.findViewById(R.id.btnAnimateMe).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// AnimationSet as = new AnimationSet(true);
// as.setDuration(2000);
//
// AlphaAnimation aa = new AlphaAnimation(0,1);
// aa.setDuration(2000);
// as.addAnimation(aa);
//
// TranslateAnimation ta = new TranslateAnimation(200,0,200,0);
// ta.setDuration(2000);
// as.addAnimation(ta);
//
// v.startAnimation(as);
v.startAnimation(AnimationUtils.loadAnimation(getActivity(),R.anim.as));
}
});
R.anim.as.xml:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:shareInterpolator="true">
<alpha
android:fromAlpha="0"
android:toAlpha="1" />
<translate
android:fromXDelta="200"
android:fromYDelta="200"
android:toXDelta="0"
android:toYDelta="0" />
</set>
6) 偵聽動畫的效果:
Animation a = AnimationUtils.loadAnimation(getActivity(), R.anim.as);
a.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
//動畫開始時
}
@Override
public void onAnimationEnd(Animation animation) {
Toast.makeText(getContext(),"Animatioin End",Toast.LENGTH_SHORT).show();
//動畫結束時
}
@Override
public void onAnimationRepeat(Animation animation) {
//動畫重複時
}
});
v.startAnimation(a);
7) 自定義動畫效果:
->定義CustomAnimation extends Animation
->重寫applyTransformation()
protected void applyTransformation(float interpolatedTime, Transformation t) {
// t.setAlpha(interpolatedTime);
if (interpolatedTime < 0.5) {
t.getMatrix().setTranslate(500 * interpolatedTime, 0);
countX = 500 * interpolatedTime;
} else {
countY = interpolatedTime - 0.5f;
t.getMatrix().setTranslate(countX, countY * 300);
}
// t.getMatrix().setTranslate((float) (Math.rint(interpolatedTime*10)*10),0);
super.applyTransformation(interpolatedTime, t);
}