先上效果:

两个动画文件:

footer_appear.xml

<setxmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:interpolator="@android:anim/decelerate_interpolator"android:fromYDelta="+12%p"android:toYDelta="0"android:duration="300"/></set>

footer_disappear.xml

<setxmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:interpolator="@android:anim/decelerate_interpolator"android:fromYDelta="0"android:toYDelta="+12%p"android:duration="300"/></set>

其中translate表示移动动画;android:fromYDelta表示Y轴从哪里开始,android:toYDelta表示Y轴从哪里结束,这里可以使用百分比,也可以使用数值;duration表示动画从哪里到哪里的持续时间


布局文件activity_main.xml

<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><Buttonandroid:id="@+id/click"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="点击"/><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:visibility="gone"android:orientation="horizontal"android:paddingTop="5dp"android:paddingLeft="4dp"android:paddingRight="1dp"android:background="@android:drawable/bottom_bar"android:layout_alignParentBottom="true"android:id="@+id/selection_menu"><Buttonandroid:id="@+id/selection_delete"android:layout_width="0dp"android:layout_height="fill_parent"android:layout_weight="1"android:text="删除"/><Buttonandroid:id="@+id/deselect_all"android:layout_width="0dp"android:layout_height="fill_parent"android:layout_weight="1"android:text="撤销"/></LinearLayout></RelativeLayout>

为了演示方便,text文字就直接写在布局文件中了。


主文件中最重要的一段

if(View.GONE==mSelectionMenuView.getVisibility()){mSelectionMenuView.setVisibility(View.VISIBLE);mSelectionMenuView.startAnimation(AnimationUtils.loadAnimation(this,R.anim.footer_appear));}else{mSelectionMenuView.setVisibility(View.GONE);mSelectionMenuView.startAnimation(AnimationUtils.loadAnimation(this,R.anim.footer_disappear));}

其他就是初始化之类的,这一段放在onClick方法中,判断一下如果button id是上面那一个点击按钮,就执行。


X方向上的移动

出现:

android:fromXDelta="-100%p"android:toXDelta="0"

消失:

android:fromXDelta="0"android:toXDelta="+100%p"

部分原理可以参考:http://www.oschina.net/question/97118_34343


也可以试试Y方向上的

出现:

android:fromYDelta="-100%p"android:toYDelta="0"

消失:

android:fromYDelta="0"android:toYDelta="+100%p"

很有意思。


动画非常重要的一点就是:它只是实现既定布局的效果。比如说移动效果,只是看起来从某一个地方移动到另外一个地方

其实在代码中只是现实和隐藏组件,加了点动画。


功能从断点下载开源项目com.mozillaonline.downloadprovider移植,算是转帖吧。




更多相关文章

  1. Android(安卓)使用setContentView来实现Acitivity的跳转
  2. 知识点整理(三)易错记录
  3. 高德地图-地图中心固定Marker,Marker跳跃、掉落、生长动画
  4. android布局页面中引入另一个布局页面
  5. Android(安卓)NotePad的简单实现
  6. PianoView-添加一行代码使用[最美应用]的酷炫控件!
  7. android所有需要的Demo地址
  8. 学习Android闹钟源代码(三)-AlarmClock类分析(part2)
  9. Android(安卓)动画AlphaAnimation类方法

随机推荐

  1. 分析.NET的异常处理
  2. 介绍ASP.NET中的MVC如何从控制器传递数据
  3. 如何使用asp.net实现文件和文件夹的复制
  4. 详解ASP.NET中连接数据库配置方法
  5. asp.net利用ashx实现验证码功能详解
  6. 在ASP.NET中实现DES加密与解密MD5加密功
  7. 在Asp.net的MVC中利用swupload实现多图片
  8. 支付宝的支付接口在.net中的使用
  9. C#中关于AutoMapper应用的实例
  10. 使用Asp.net实现信息管理系统的数据统计