本文主要介绍Android中创建与配置布局动画的相关操作,主要包括:
1.为布局添加动画效果
2.布局内容改变动画效果
3.为列表添加布局动画效果
4.使用资源文件配置布局动画
详细代码:github.com/Baolvlv/LearnAndroid/tree/master/LayoutAnimation
1.为布局添加动画效果
布局的动画添加到布局所有的子容器中,使用LayoutAnimationController
在fragment的onCreatView函数中,首先设置动画,将动画添加到LayoutAnimationController中
在将LayoutAnimationConTroller的对象添加到返回的view 中
LinearLayout rootView = (LinearLayout) inflater.inflate(R.layout.fragment_main,container,false);
ScaleAnimation sa =newScaleAnimation(0,1,0,1);
sa.setDuration(5000);
//第二个参数为延时,第二个组件在第一个动画一半的时开始
LayoutAnimationController lac =newLayoutAnimationController(sa,0.5f);
//设置动画顺序,从上往下,从下往上,随机
lac.setOrder(LayoutAnimationController.ORDER_RANDOM);
rootView.setLayoutAnimation(lac);
returnrootView;
MainActivity中解析fragment后即可使用
if(savedInstanceState ==null){
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.activity_main,newExampleFragment())
.commit();
2.布局内容改变动画效果
在res文件夹下新建menu文件夹,编写一个加号的actionBar,
xmlns:app="http://schemas.android.com/apk/res-auto">
android:orderInCategory="100"
app:showAsAction="never"
android:title="action_setting"/>
app:showAsAction="always"
android:icon="@android:drawable/ic_input_add"
android:title="lll”/>
在MainActivity中,重写onCreateOptionsMenu方法,加载menu资源
@Override
public booleanonCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.main,menu);
return super.onCreateOptionsMenu(menu);
}
重写当选择不同的item时,执行的操作
@Override
public booleanonOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
caseR.id.action_settings:
return true;
caseR.id.action_add:
addButton();
default:
break;
}
在主布局资源文件中设置布局资源改变后的有动画效果
android:animateLayoutChanges="true"
3.为列表添加布局动画效果
为列表添加动画效果与为布局添加动画效果相同,都是用LayoutAnimationController
设置列表
adapter=newArrayAdapter(this,android.R.layout.simple_list_item_1,newString[]{"kk","bss","welcome"});
setListAdapter(adapter);
设置动画
sa=newScaleAnimation(0,1,0,1);
sa.setDuration(1000);
实例化LayoutAnimationController
lac=newLayoutAnimationController(sa,0.5f);
为listView添加动画
getListView().setLayoutAnimation(lac);
4.使用资源文件配置布局动画
先在res文件夹下新建anim文件夹,创建动画的xml文件
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="0"
android:toXScale="1"
android:fromYScale="0"
android:toYScale="1"
android:duration="1000”/>
再创建layout animtion的xml文件,包含刚才创建的动画
xmlns:android="http://schemas.android.com/apk/res/android"
android:animation="@anim/scale_0_1"
android:delay="0.5">
再创建主布局资源文件,包含刚才创建的布局动画,当主布局有listView时,必须包含标签,且id必须为@android:id/list
http://schemas.android.com/apk/res/android"
android:orientation="vertical"android:layout_width="match_parent"
android:layout_height="match_parent">
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layoutAnimation="@anim/listview_anim"/>
最后为主activity添加布局资源即可
setContentView(R.layout.main);