关于项目中遇到的一些问题,还有一些动画的总结。
首先是动画部分。
在首页中 给textview 加入了属性动画。使textview可以有翻转的效果。
动画总共分为三种,第一种,补间动画、这种动画效果,在执行完毕之后会将控件还原到原始状态,不会改变控件的任何属性。
第二种,帧动画,主要用于做成连续的动画效果显示。
第三种,属性动画,这种动画执行完毕之后,会将控件属性改变为当前状态,可以用于翻转,平滑的activity跳转之间的动画效果。
属性动画 让控件翻转效果:代码如下。
ObjectAnimator.ofFloat(city_name//控件
,"rotationY"//要进行的动作。
, 0.0F, 360.0F)//翻转角度
.setDuration(2000)//设置动画的持续时间 .start();帧动画 首先将要连续播放的图片放入项目中。 在drawable文件中新建xml文件。内容如下。
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@mipmap/a" android:duration="200"/> <item android:drawable="@mipmap/aa" android:duration="200"/> <item android:drawable="@mipmap/aaa" android:duration="200"/> </animation-list>
oneshot为是否循环一次。false为无限次循环
帧动画主要用于加载网络数据时,在数据解析出来之前执行动画。数据加载结束后,将动画关闭。
在java中的代码如下:
//首先将控件初始化。
iv_load = (ImageView)view.findViewById(R.id.image_load);//图片控件在xml文件中不能使用 src 填充图片,否则会出现动画不动,只显示一张图片的错误。//给iamgeview设置背景资源文件。city_load中的代码如上iv_load.setBackgroundResource(R.drawable.city_load);//通过getBackgroud方法将imageview的图片资源得到。 drawable = (AnimationDrawable)iv_load.getBackground();//开启动画 drawable.start();
在关闭动画时先进行判断图片是否在运行if(drawable.isRunning()){drawable.stop();
}如何做布局的翻转效果。第一种方式是使用fragment切换效果。TextFragment fragment=new TextFragment();fragment切换方式可以通过//设置进入动画。使用的是android自带的方法fragment1.setEnterTransition(FragmentTransaction.TRANSIT_ENTER_MASK);
//设置退出动画,同样的方式fragment.setExitTransition(~~~);通过自定义的动画切换fragment.setCustomAnimations(R.anim.enter,R.anim.exit,R.anim.pop_enter,R.anim.pop_exit);R.anim.enter//第一个fragment进入时的动画<set xmlns:android="http://schemas.android.com/apk/res/android" > <objectAnimator android:duration="1000" android:propertyName="rotationY" android:valueFrom="180.0" android:valueTo="360.0" android:valueType="floatType" /> <objectAnimator android:duration="1000" android:propertyName="alpha" android:valueFrom="0.0" android:valueTo="1.0" android:valueType="floatType" /> </set>R.anim.exit//第一个fragment退出时的动画<set xmlns:android="http://schemas.android.com/apk/res/android" > <objectAnimator android:duration="1000" android:propertyName="rotationY" android:valueFrom="0.0" android:valueTo="180.0" android:valueType="floatType" /> <objectAnimator android:duration="1000" android:propertyName="alpha" android:valueFrom="1.0" android:valueTo="0.0" android:valueType="floatType" /> </set>R.anim.pop_enter//第二个fragment进入时的动画<set xmlns:android="http://schemas.android.com/apk/res/android" > <objectAnimator android:duration="1000" android:propertyName="rotationY" android:valueFrom="180.0" android:valueTo="0.0" android:valueType="floatType" /> <objectAnimator android:duration="1000" android:propertyName="alpha" android:valueFrom="0.0" android:valueTo="1.0" android:valueType="floatType" /> </set>R.anim.pop_exit<set xmlns:android="http://schemas.android.com/apk/res/android" > <objectAnimator android:duration="1000" android:propertyName="rotationY" android:valueFrom="360.0" android:valueTo="180.0" android:valueType="floatType" /> <objectAnimator android:duration="1000" android:propertyName="alpha" android:valueFrom="1.0" android:valueTo="0.0" android:valueType="floatType" /> </set>关键:::进行翻转效果使用的都是属性 然而v4包中的fragment不能使用动画 会出现不能识别的动画效果的错误。如果想使用这种动画 需要fragment继承自 app包中 或者将 v4包中的fragmnet转为需要的类型//开启事物FragmentTransaction transaction = getFragmentManager().beginTransaction();transaction.replace(framlayout,fragment).commit();不适用属性动画来实现翻转效果下篇接着补充。