demo下载地址: http://yun.baidu.com/s/1i3wqEMh

由于前几年csdn泄露password的事件,导致我的账号被拿去发广告文章了,联系了管理员帮我把几篇广告文删掉,可是那几篇高质量的文章就这样没了。如今补回当中一篇。是关于怎样实现像赶集生活client第一次启动时的介绍动画的,demo在上面,能够下载来试试效果。有须要的能够在评论里提供邮箱。博主会把project发过去 : )

//FeatureAnimationListener.java

package com.example.animatetest;

import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener; public class FeatureAnimationListener implements AnimationListener {
private View mAnimView;
private boolean mAnimIn; public FeatureAnimationListener(View animView, boolean animIn) {
mAnimView = animView;
mAnimIn = animIn;
} @Override
public void onAnimationEnd(Animation animation) {
if(!mAnimIn) {
mAnimView.setVisibility(View.INVISIBLE);
}
} @Override
public void onAnimationRepeat(Animation animation) {} @Override
public void onAnimationStart(Animation animation) {
if(mAnimIn) {
mAnimView.setVisibility(View.VISIBLE);
}
} }
//OnScrollChangedListener.java

package com.example.animatetest;

public abstract interface OnScrollChangedListener {
public abstract void onScrollChanged(int top, int oldTop);
}
//ObservableScrollView.java

package com.example.animatetest;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ScrollView; public class ObservableScrollView extends ScrollView {
private OnScrollChangedListener onScrollChangedListener; public ObservableScrollView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
} public ObservableScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
} public ObservableScrollView(Context context) {
super(context);
} @Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if(this.onScrollChangedListener != null) {
onScrollChangedListener.onScrollChanged(t, oldt);
}
} public void setOnScrollChangedListener(OnScrollChangedListener onScrollChangedListener) {
this.onScrollChangedListener = onScrollChangedListener;
} }
//MainActivity.java

package com.example.animatetest;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils; public class MainActivity extends Activity implements OnGlobalLayoutListener, OnScrollChangedListener {
private ObservableScrollView mScrollView;
private View mAnimView;
private int mScrollViewHeight;
private int mStartAnimateTop; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); mScrollView = (ObservableScrollView)this.findViewById(R.id.scrollView1);
mScrollView.getViewTreeObserver().addOnGlobalLayoutListener(this);
mScrollView.setOnScrollChangedListener(this); mAnimView = this.findViewById(R.id.anim1);
mAnimView.setVisibility(View.INVISIBLE);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
public void onGlobalLayout() {
mScrollViewHeight = mScrollView.getHeight();
mStartAnimateTop = mScrollViewHeight / 3 * 2;
} boolean hasStart = false;
@Override
public void onScrollChanged(int top, int oldTop) {
int animTop = mAnimView.getTop() - top; if(top > oldTop) {
if(animTop < mStartAnimateTop && !hasStart) {
Animation anim1 = AnimationUtils.loadAnimation(this, R.anim.feature_anim2scale_in);
anim1.setAnimationListener(new FeatureAnimationListener(mAnimView, true)); mAnimView.startAnimation(anim1);
hasStart = true;
}
} else {
if(animTop > mStartAnimateTop && hasStart) {
Animation anim1 = AnimationUtils.loadAnimation(this, R.anim.feature_alpha_out);
anim1.setAnimationListener(new FeatureAnimationListener(mAnimView, false)); mAnimView.startAnimation(anim1);
hasStart = false;
}
}
}
}

这里主要是继承ScrollView,重载里面的onScrollChanged方法。监听ScrollView的滑动状态,从而控制动画的显示和消失。

仿&lt;赶集生活&gt;client启动动画效果的更多相关文章

  1. iOS启动动画效果实现

    原理 在window上加一个UIImageView它的图片和启动图的图片一样,然后再调整动画 运行展示 demo百度云连接:http://pan.baidu.com/s/1c0QcYu0 more:网 ...

  2. 使用Canvas实现动画效果 | DKlogs -- 设计 | 生活

    使用Canvas实现动画效果 | DKlogs -- 设计 | 生活 使用Canvas实现动画效果

  3. 安卓开发20:动画之Animation 详细使用-主要通过java代码实现动画效果

    AlphaAnimation 透明效果实现: activity_main.xml中仅仅是一个简单的图片,下面的例子都会使用这个xml: <RelativeLayout xmlns:android ...

  4. 实现页面切换(动画效果实现,不用ViewPager)

    源代码地址 http://download.csdn.net/detail/u013210620/8791687 先看主页面布局activity_main <?xml version=" ...

  5. iOS仿写有妖气漫画、视频捕获框架、启动页广告页demo、多种动画效果等源码

    iOS精选源码 以tableview的section为整体添加阴影效果/ta'b'le'vi'e'w顶部悬浮.... 一个可以轻松应用自定义过滤器的视频捕获框架. 基于UITableView的组件,旨 ...

  6. 【Android UI设计与开发】第03期:引导界面(三)仿微信引导界面以及动画效果

    基于前两篇比较简单的实例做铺垫之后,这一篇我们来实现一个稍微复杂一点的引导界面的效果,当然也只是稍微复杂了一点,对于会的人来说当然还是so easy!正所谓会者不难,难者不会,大概说的就是这个意思了吧 ...

  7. Android应用系列:仿MIUI的Toast动画效果实现(有图有源码)

    前言 相信有些人用过MIUI,会发现小米的Toast跟Android传统的Toast特么是不一样的,他会从底部向上飞入,然后渐变消失.看起来效果是挺不错的,但是对于Android原生Toast是不支持 ...

  8. Android应用系列:仿MIUI的Toast动画效果实现

    前言 相信有些人用过MIUI,会发现小米的Toast跟Android传统的Toast特么是不一样的,他会从底部向上飞入,然后渐变消失.看起来效果是挺不错的,但是对于Android原生Toast是不支持 ...

  9. javascript仿天猫加入购物车动画效果

    javascript仿天猫加入购物车动画效果   注意:首先需要声明的是:代码原思路不是我写的,是在网上找的这种效果,自己使用代码封装了下而已:代码中都有注释,我们最主要的是理解抛物线的思路及在工作中 ...

随机推荐

  1. App优化 Systrace

    简介 trace [tres] vt.跟踪,追踪; 追溯,探索; 探索; 查找; n.痕迹; 痕迹,踪迹; 微量,极少量; 1 1   1 trace [tres] vt.跟踪,追踪; 追溯,探索; ...

  2. AngularJS driective 封装 自动滚动插件

    1.ui-smooth-scroll.js文件内容 angular.module('app') .directive('uiSmoothScroll', ['$location', '$anchorS ...

  3. 让IE6/IE7/IE8支持HTML5标签的js代码

    让IE(ie6/ie7/ie8)支持HTML5元素,我们需要在HTML头部添加以下JavaScript,这是一个简单的document.createElement声明,利用条件注释针对IE来调用这个j ...

  4. JS操作JSON常用方法

    一.JSON字符串的替换 工作经常遇到这样的字符串,如下: 需要经过替换后,才能从字符串转化成JSON对象.这里我们需要用JS实现replaceAll的功能, 将所有的 ' \\" ' 替换 ...

  5. Linux Shell处理文本最常用的工具大盘点

    导读 本文将介绍Linux下使用Shell处理文本时最常用的工具:find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk:提供的例子和参数都是最常用和最为实 ...

  6. ntpdate设置

    ntpdate设置 学习了:https://www.cnblogs.com/ibnode/p/3573302.html http://www.blogjava.net/spray/archive/20 ...

  7. android 如何连真机测试

    1. 设置android手机为USB调试模式.步骤: menu---> 设置 ---> 应用程序 ---> 开发 , 选择[USB调试] 2. 用USB连接手机和电脑,并确保成功.步 ...

  8. Socket 之 传值方式

    一.传送 DataTable 和 DataSet 1.发送端需序列化数据为二进制序列化格式 public static byte[] GetBinaryFormatDataSet(DataSet ds ...

  9. Linux安装 微信开发者工具(deepin linux ubt)

    一.环境:: deepin linux15.4.1 二.安装过程: 2.1 安装wine sudo apt-get install wine 2.2 安装nwjs-sdk 2.2.1 下载linux版 ...

  10. ASP.NET MVC+Bootstrap 实现短信验证

    短信验证大家都已经非常熟悉了,基本上每天都在接触手机短信的验证码,比方某宝,某东购物.站点注冊,网上银行等等,都要验证我们的手机号码真实性.这样做有什么优点呢. 曾经咱们在做站点的时候.为了提高用户注 ...