android动画(3)layout动画,layoutChanged动画及算定义它,ListViewActivity的Layout动画(代码和xm配置两种实现l)
来源:互联网 发布:ios免费漫画软件推荐 编辑:程序博客网 时间:2024/06/03 22:50
1.layout切换动画
代码:
本示例是fragment切换.在它的oncreateView中
public class LayoutAnimationFrgmt extends Fragment {<span style="white-space:pre"></span>@Override<span style="white-space:pre"></span>public View onCreateView(LayoutInflater inflater, ViewGroup container,<span style="white-space:pre"></span>Bundle savedInstanceState) {<span style="white-space:pre"></span>super.onCreateView(inflater, container, savedInstanceState);<span style="white-space:pre"></span>// TODO Auto-generated method stub<span style="white-space:pre"></span>RelativeLayout rl = (RelativeLayout) inflater.inflate(R.layout.fragment_layout_animation, container,<span style="white-space:pre"></span>false);<span style="white-space:pre"></span><span style="white-space:pre"></span>ScaleAnimation sa = new ScaleAnimation(0,1,0,1);<span style="white-space:pre"></span>sa.setDuration(350);<span style="white-space:pre"></span>LayoutAnimationController lac = new LayoutAnimationController(sa,0.5f);//0.5f是第后续控件的间隔 <span style="white-space:pre"></span>lac.setOrder(LayoutAnimationController.ORDER_REVERSE);//设置动画方向,ORDER_REVERSE是反向<span style="white-space:pre"></span>rl.setLayoutAnimation(lac);<span style="white-space:pre"></span>return rl;<span style="white-space:pre"></span>}}
2.layout内容变化时的动画
2.1 在相应的layout的xml里 android:animateLayoutChanges="true"
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/fragment_layout_changed_animation" <span style="color:#ff0000;">android:animateLayoutChanges="true"</span>> <TextView android:id="@+id/flatv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:text="@string/add_button" /></RelativeLayout>
public class LayoutChangedAnimationFrgmt extends Fragment implements OnClickListener {private RelativeLayout rl;private TextView tv;LayoutTransition mTransition;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreateView(inflater, container, savedInstanceState);rl = (RelativeLayout) inflater.inflate(R.layout.fragment_layout_changed_animation, container,false);mTransition = new LayoutTransition();rl.setLayoutTransition(mTransition);<span style="color:#ff0000;">setupCustomAnimations</span>();//初始化动画tv = (TextView) rl.findViewById(R.id.flatv);return rl;}// LayoutTransition 生成自定义动画 private void <span style="color:#ff0000;">setupCustomAnimations</span>() { // 动画:CHANGE_APPEARING // Changing while Adding PropertyValuesHolder pvhLeft = PropertyValuesHolder.ofInt("left", 0, 1); PropertyValuesHolder pvhTop = PropertyValuesHolder.ofInt("top", 0, 1); PropertyValuesHolder pvhRight = PropertyValuesHolder.ofInt("right", 0, 1); PropertyValuesHolder pvhBottom = PropertyValuesHolder.ofInt("bottom", 0, 1); PropertyValuesHolder pvhScaleX = PropertyValuesHolder.ofFloat("scaleX", 1f, 0f, 1f); PropertyValuesHolder pvhScaleY = PropertyValuesHolder.ofFloat("scaleY", 1f, 0f, 1f); final ObjectAnimator changeIn = ObjectAnimator.ofPropertyValuesHolder( this, pvhLeft, pvhTop, pvhRight, pvhBottom, pvhScaleX, pvhScaleY).setDuration( mTransition.getDuration(LayoutTransition.CHANGE_APPEARING)); mTransition.setAnimator(LayoutTransition.CHANGE_APPEARING, changeIn); changeIn.addListener(new AnimatorListenerAdapter() { public void onAnimationEnd(Animator anim) { View view = (View) ((ObjectAnimator) anim).getTarget(); // View也支持此种动画执行方式了 view.setScaleX(1f); view.setScaleY(1f); } }); // 动画:CHANGE_DISAPPEARING // Changing while Removing Keyframe kf0 = Keyframe.ofFloat(0f, 0f); Keyframe kf1 = Keyframe.ofFloat(.9999f, 360f); Keyframe kf2 = Keyframe.ofFloat(1f, 0f); PropertyValuesHolder pvhRotation = PropertyValuesHolder.ofKeyframe( "rotation", kf0, kf1, kf2); final ObjectAnimator changeOut = ObjectAnimator .ofPropertyValuesHolder(this, pvhLeft, pvhTop, pvhRight, pvhBottom, pvhRotation) .setDuration( mTransition .getDuration(LayoutTransition.CHANGE_DISAPPEARING)); mTransition .setAnimator(LayoutTransition.CHANGE_DISAPPEARING, changeOut); changeOut.addListener(new AnimatorListenerAdapter() { public void onAnimationEnd(Animator anim) { View view = (View) ((ObjectAnimator) anim).getTarget(); view.setRotation(0f); } }); // 动画:APPEARING // Adding ObjectAnimator animIn = ObjectAnimator.ofFloat(null, "rotationY", 90f, 0f).setDuration( mTransition.getDuration(LayoutTransition.APPEARING)); mTransition.setAnimator(LayoutTransition.APPEARING, animIn); animIn.addListener(new AnimatorListenerAdapter() { public void onAnimationEnd(Animator anim) { View view = (View) ((ObjectAnimator) anim).getTarget(); view.setRotationY(0f); } }); // 动画:DISAPPEARING // Removing ObjectAnimator animOut = ObjectAnimator.ofFloat(null, "rotationX", 0f, 90f).setDuration( mTransition.getDuration(LayoutTransition.DISAPPEARING)); mTransition.setAnimator(LayoutTransition.DISAPPEARING, animOut); animOut.addListener(new AnimatorListenerAdapter() { public void onAnimationEnd(Animator anim) { View view = (View) ((ObjectAnimator) anim).getTarget(); view.setRotationX(0f); } }); }//其它方法略...}
3.ListViewLayout的动画(用代码和xml配置两个方法实现)
3.1 代码实现
public class LayoutAnimInListViewCodeAty extends ListActivity {private ArrayAdapter<String> adapter;private String [] datas;private LayoutAnimationController lac;private TranslateAnimation ta;private ScaleAnimation sa;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//setContentView(R.layout.activity_layout_list_view);ListActivity不用它.datas = new String[]{"hei","bai","hooo","lvv","lann"};adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,datas);setListAdapter(adapter);ta = new TranslateAnimation(0,1,0,1);sa = new ScaleAnimation(0,1,0,1);sa.setDuration(1000);//lac = new LayoutAnimationController(ta,0.5f);lac = new LayoutAnimationController(sa,0.5f);getListView().setLayoutAnimation(lac);}<span style="white-space:pre"></span>//其它略...}
代码部分:
public class LayoutAnimInListViewXmlAty extends ListActivity {private ArrayAdapter<String> adapter;private String[] datas;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_layout_anim_in_list_xml_aty);datas = new String[] { "hei", "bai", "hooo", "lvv", "lann" };adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, datas);setListAdapter(adapter);}@Override
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.layoutanimation.LayoutAnimInListViewXmlAty" > <ListView <span style="font-size:24px;color:#ff0000;">android:id="@android:id/list"</span> android:layout_width="match_parent" android:layout_height="match_parent" <span style="color:#ff0000;">android:layoutAnimation="@anim/listview_anim"</span> > </ListView></RelativeLayout>
layout动画配置文件:listview_anim.xml
<?xml version="1.0" encoding="utf-8"?><layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" android:animation="@anim/scale_xml_anim" android:delay="0.5" ></layoutAnimation>
<?xml version="1.0" encoding="utf-8"?><scale xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" android:fromXScale="0" android:fromYScale="0" android:toXScale="1" android:toYScale="1" ></scale>
0 0
- android动画(3)layout动画,layoutChanged动画及算定义它,ListViewActivity的Layout动画(代码和xm配置两种实现l)
- Android 动画总结-Layout动画
- Android 给layout设置动画的两种方式
- 【Android】Tween/Layout/Frame动画
- Android Layout 布局动画的介绍
- Android Layout 布局动画的介绍
- 带波纹动画的Layout
- layout动画初体验
- layout变化动画
- 【Layout Animation 布局动画】
- iOS layout 动画
- Android 动画——Layout Animations布局动画
- Android自定义水波纹动画Layout
- Android 布局动画(Layout Animations)
- 利用ViewFlipper和GestureDetector实现两个layout之间动画切换
- android渐变动画的两种实现
- layout设置出现和隐藏动画
- Animating Layout Changes 动画布局的更改
- 为什么会status UNKNOWN呢
- 第37课第四题&第38课第一题
- 安卓系统源码编译系列(七)——单独编译WebView兼容性问题解决
- CPP冒泡排序,插入排序,快速排序,等
- C# 不安全代码
- android动画(3)layout动画,layoutChanged动画及算定义它,ListViewActivity的Layout动画(代码和xm配置两种实现l)
- springMVC多图片上传
- Servlet传输过程中解决中文乱码问题
- Vitamio之播放音频
- hadoop学习笔记二 ——非常规使用
- 1014. Waiting in Line (30)
- AndroidStudio&Eclipse快捷键
- 判断NSDictionary是否包含某个键
- oops的解读方法-----怎么通过oops查找源码行