样式,主题和动画
2015-07-08 11:06
609 查看
样式---------定义在values种的style.xml里,和主题不同,样式的作用范围主要是在控件上,旨在抽出不同布局里不同控件相同风格的一组属性。
主题-------主要是写在清单文件里,有基于应用的,也有基于Activity的,包括一些背景色和是否全屏等等,具体可以看系统SDK的platforms下的value文件夹下。
动画分为几种
帧动画,首先创建一个xml文件gril.xml,添加节点
activity里代码如下
补间动画
旋转,位移,缩放,透明度动画
组合的时候就放在set集合里,开始的false代表自顾自得速度。
代码也可以用xml文件来定义,
这样就可以直接用AnimationUtils.loadAnimation(Context,R.anim.xx);
主题-------主要是写在清单文件里,有基于应用的,也有基于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);