您的位置:首页 > Web前端 > CSS

样式,主题和动画

2015-07-08 11:06 609 查看
样式---------定义在values种的style.xml里,和主题不同,样式的作用范围主要是在控件上,旨在抽出不同布局里不同控件相同风格的一组属性。

主题-------主要是写在清单文件里,有基于应用的,也有基于Activity的,包括一些背景色和是否全屏等等,具体可以看系统SDK的platforms下的value文件夹下。

动画分为几种

帧动画,首先创建一个xml文件gril.xml,添加节点
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false"
>
<item
android:drawable="@drawable/girl_1"
android:duration="200"/>
<item
android:drawable="@drawable/girl_2"
android:duration="200"/>
<item
android:drawable="@drawable/girl_3"
android:duration="200"/>

</animation-list>
oneshot 设置成true就是只播放一次,false循环播放

activity里代码如下

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) findViewById(R.id.iv);
// 把xml文件的动画资源设置为iv背景
iv.setBackgroundResource(R.drawable.girl);
// 获取设置的动画资源。 执行可能需要花费一定的时间
mAnimationDrawable = (AnimationDrawable) iv.getBackground();

}

public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
mAnimationDrawable.start();
return true;
}
return super.onTouchEvent(event);
}


补间动画

旋转,位移,缩放,透明度动画

//透明度动画
public void alpha(View view){
AlphaAnimation  aa = new AlphaAnimation(0.0f, 1.0f);      //完全透明-》完全不透明
aa.setDuration(2000);  //播放时间
aa.setRepeatCount(1);  //重复次数1,共播放2次,-1代表无限次,永远不停
aa.setRepeatMode(Animation.REVERSE);   //重复类型,逆序
aa.setFillAfter(true);  //是否还原
iv.startAnimation(aa);
}
//位移动画
public void trans(View view){
TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, -0.5f,
Animation.RELATIVE_TO_PARENT, 0.5f,
Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f);  //开始类型(相对父亲或相对自己),x轴开始点,x轴结束点
ta.setDuration(2000);
ta.setRepeatCount(1);
ta.setRepeatMode(Animation.REVERSE);
iv.startAnimation(ta);
}


//缩放动画
public void scale(View view){
ScaleAnimation sa = new ScaleAnimation(0.1f, 2.0f, 0.1f, 2.0f, Animation.RELATIVE_TO_SELF,
0.5f, Animation.RELATIVE_TO_SELF, 0.5f);    //开始x,缩放后x,开始y,缩放后y,相对自己,自己中心点,相对自己,0.5y就是自己的中心点
sa.setDuration(2000);
sa.setRepeatCount(1);
sa.setRepeatMode(Animation.REVERSE);
iv.startAnimation(sa);
}

//旋转动画
public void rotate(View view){
RotateAnimation ra = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF,
0.0f, Animation.RELATIVE_TO_SELF, 0.0f);   //相对于自己的左上角转360度
ra.setDuration(2000);
ra.setRepeatCount(1);
ra.setRepeatMode(Animation.REVERSE);
iv.startAnimation(ra);
}


//动画组合
public void set(View view){
AnimationSet set = new AnimationSet(false);
TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, -0.5f,
Animation.RELATIVE_TO_PARENT, 0.5f,
Animation.RELATIVE_TO_PARENT, -0.5f,
Animation.RELATIVE_TO_PARENT, 0.5f);
ta.setDuration(2000);
ta.setRepeatCount(1);
ta.setRepeatMode(Animation.REVERSE);
ScaleAnimation sa = new ScaleAnimation(0.1f, 2.0f, 0.1f, 2.0f, Animation.RELATIVE_TO_SELF,
0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
sa.setDuration(2000);
sa.setRepeatCount(1);
sa.setRepeatMode(Animation.REVERSE);
RotateAnimation ra = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF,
0.0f, Animation.RELATIVE_TO_SELF, 0.0f);
ra.setDuration(2000);
ra.setRepeatCount(1);
ra.setRepeatMode(Animation.REVERSE);
set.addAnimation(ra);
//set.addAnimation(ta);
set.addAnimation(sa);
iv.startAnimation(set);
}


组合的时候就放在set集合里,开始的false代表自顾自得速度。
代码也可以用xml文件来定义,

这样就可以直接用AnimationUtils.loadAnimation(Context,R.anim.xx);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: