android中的动画(一)

来源:互联网 发布:杭州seo博客 编辑:程序博客网 时间:2024/05/21 03:59

以下有4中基本动画 :   布局的写法  和  代码的写法   

布局简单但不可变:代码可变但是写法复杂一点(可以设置重复次数等信息)

续播动画:

组合动画:

帧动画:

布局动画:

动画可以作用在view上viewgroup上,activity切换的时候

在res文件夹中创建anim文件夹,在文件夹中创建set相关的xml布局文件

scale:

最重要的是以谁为锚点从多少缩放到多少

锚点:

 android:pivotX="50%"
 android:pivotY="50%"

动画时长:

  android:duration="2000"

动画播放完是否停留在播放之后

 android:fillAfter="false"

插入器:

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

从哪个比例缩放到哪个比例:

from:

    android:fromXScale="0.5"

     android:fromYScale="0.5"

to:

    android:toXScale="1.0"
    android:toYScale="1.0" 

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >


    <scale
        android:duration="2000"
        android:fillAfter="false"
        android:fromXScale="0.5"
        android:fromYScale="0.5"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.0"
        android:toYScale="1.0" />

</set>


rotate: 

以谁为锚点        从多少度旋转到多少度

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <rotate
        android:duration="1000"
        android:fromDegrees="0"
        android:interpolator="@android:anim/bounce_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="+720" />
</set>


translate:

以当前对象0,0点为坐标  ,从哪移动到哪

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="1000"
        android:fromXDelta="-50"
        android:fromYDelta="-50"
        android:toXDelta="100"
        android:toYDelta="100" />
</set>


alpha:

从多少透明度到透明度多少的变化

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >


    <alpha
        android:duration="1000"
        android:fromAlpha="0.5"
        android:toAlpha="1.0" >
    </alpha>

</set>



续播:

创建两个动画  一个播放完之后,通过监听播放第二个动画。

case R.id.continue_btn: {
loadAnimation = AnimationUtils
.loadAnimation(this, R.anim.translate);
image.startAnimation(loadAnimation);
final Animation loadAnimation2 = AnimationUtils.loadAnimation(this,
R.anim.rotate);
loadAnimation.setAnimationListener(new AnimationListener() {


@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub


}


@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub


}


@Override
public void onAnimationEnd(Animation arg0) {
// TODO Auto-generated method stub
image.startAnimation(loadAnimation2);
}
});
break;
}




续播2: 组合动画

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >


    <alpha
        android:duration="3000"
        android:fromAlpha="0.2"
        android:toAlpha="1.0" />
    <alpha
        android:duration="3000"
        android:fromAlpha="1.0"
        android:startOffset="3000"
        android:toAlpha="0.2" />


</set>





帧动画:

case R.id.frame:
{
image.setImageResource(R.drawable.anim_list);
break;
}


<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >


    <item
        android:drawable="@drawable/one"
        android:duration="500"/>
    <item
        android:drawable="@drawable/two"
        android:duration="500"/>
    <item
        android:drawable="@drawable/three"
        android:duration="500"/>
    <item
        android:drawable="@drawable/four"
        android:duration="500"/>
    <item
        android:drawable="@drawable/five"
        android:duration="500"/>
    <item
        android:drawable="@drawable/six"
        android:duration="500"/>


</animation-list>


切换动画

case R.id.change:
{
Intent intent=new Intent(MainActivity.this,MainActivity2.class);
startActivity(intent);
overridePendingTransition(R.anim.zoom_in,R.anim.zoom_out);
break;
}




闪烁动画:

case R.id.flash: {


AlphaAnimation alphaAnimation = new AlphaAnimation(0.1f, 1.0f);
alphaAnimation.setDuration(100);
alphaAnimation.setRepeatCount(10);
//倒序重复REVERSE  正序重复RESTART
alphaAnimation.setRepeatMode(Animation.REVERSE);
image.startAnimation(alphaAnimation);


break;
}



抖动动画:

创建动画,设置重复次数,重复模式就好了

case R.id.move: {
TranslateAnimation translate = new TranslateAnimation(-50, 50,
0, 0);
translate.setDuration(1000);
translate.setRepeatCount(Animation.INFINITE);
translate.setRepeatMode(Animation.REVERSE);
image.startAnimation(translate);


break;
}




布局动画:

public class ListActivity extends Activity{

private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.list_layout);
listView=(ListView) findViewById(R.id.listView);
List<String>list=new ArrayList<String>();
for(int i=0;i<20;i++)
{
list.add("haha"+i);
}
ArrayAdapter<String>adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
   listView.setAdapter(adapter);
   LayoutAnimationController lac=new LayoutAnimationController(AnimationUtils.loadAnimation(this, R.anim.zoom_in));
   lac.setOrder(LayoutAnimationController.ORDER_NORMAL);
   listView.setLayoutAnimation(lac);
   listView.startLayoutAnimation();
}


}



0 0