首先看看效果图,最下边有Demo的下载链接:

                


              


 


一、当前的Activity 重写dispatchTouchEvent 方法并且实现AnimationListener接口来达到动画的效果,代码如下:

 private boolean mIsTitleHide = false;    private boolean mIsAnim = false;    private float lastX = 0;    private float lastY = 0;    @Override    public boolean dispatchTouchEvent(MotionEvent event)    {        super.dispatchTouchEvent(event);        if (mIsAnim) {            return false;        }        final int action = event.getAction();        float x = event.getX();        float y = event.getY();        switch (action) {        case MotionEvent.ACTION_DOWN:            lastY = y;            lastX = x;            return false;        case MotionEvent.ACTION_MOVE:            float dY = Math.abs(y - lastY);            float dX = Math.abs(x - lastX);            boolean down = y > lastY ? true : false;            lastY = y;            lastX = x;            if (dX < 8 && dY > 8 && !mIsTitleHide && !down) {                Animation anim = AnimationUtils.loadAnimation(                        BlogListActivity.this, R.anim.push_top_in);//              anim.setFillAfter(true);                anim.setAnimationListener(BlogListActivity.this);                title_content.startAnimation(anim);            } else if (dX < 8 && dY > 8 && mIsTitleHide && down) {                Animation anim = AnimationUtils.loadAnimation(                    BlogListActivity.this, R.anim.push_top_out);//              anim.setFillAfter(true);                anim.setAnimationListener(BlogListActivity.this);                title_content.startAnimation(anim);            } else {                return false;            }            mIsTitleHide = !mIsTitleHide;            mIsAnim = true;            break;        default:            return false;        }        return false;    }

二、重写AnimationListener方法

@Overridepublic void onAnimationEnd(Animation animation) {// TODO Auto-generated method stubif (mIsTitleHide) {title.setVisibility(View.GONE);} else {}mIsAnim = false;}@Overridepublic void onAnimationRepeat(Animation animation) {// TODO Auto-generated method stub}@Overridepublic void onAnimationStart(Animation animation) {// TODO Auto-generated method stubtitle.setVisibility(View.VISIBLE);if (mIsTitleHide) {FrameLayout.LayoutParams lp = (LayoutParams) mlinear_listview.getLayoutParams();lp.setMargins(0, 0, 0, 0);mlinear_listview.setLayoutParams(lp);} else {FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) title.getLayoutParams();lp.setMargins(0, 0, 0, 0);title.setLayoutParams(lp);FrameLayout.LayoutParams lp1 = (LayoutParams) mlinear_listview.getLayoutParams();lp1.setMargins(0,getResources().getDimensionPixelSize(R.dimen.title_height),0, 0);mlinear_listview.setLayoutParams(lp1);}}


动画 push_top_in.xml

<?xml version="1.0" encoding="utf-8"?>    

动画 push_top_out.xml
<?xml version="1.0" encoding="utf-8"?>    


以上代码就可以实现具体的功能了。


Demo下载地址:http://download.csdn.net/detail/tuibiansoar/8153269

更多相关文章

  1. 谈中型项目下的编码技巧二
  2. Android(安卓)listview多类型item问题
  3. 如何让Activity以全屏方式显示
  4. Android(安卓)Weekly Notes Issue #251
  5. android 在应用中安装其他程序
  6. 浅析Android中的visibility属性
  7. android ActivityGroup认识
  8. android 内置的短信等调用代码
  9. Android实现异步加载图片 ListView

随机推荐

  1. android socket io 前篇
  2. Android(安卓)开源项目
  3. Androidの异常总结
  4. Android(安卓)P 默认壁纸被拉伸
  5. Installation error: INSTALL_FAILED_VER
  6. Android进程与线程基本知识四
  7. cordova Android(安卓)Platform Guide
  8. 【android】当数据库需要更新时我们该怎
  9. Android客户端上传文件,C#服务端接收文件
  10. Android(安卓)WebView相关属性