2013.08.29——— android ObjectAnimator

2013.08.29——— android ObjectAnimator
参考: http://mzh3344258.blog.51cto.com/1823534/886522
http://blog.csdn.net/droyon/article/details/8689249
http://my.eoe.cn/682121/archive/2288.html


public class BetweenAnimationActivity extends Activity implements OnClickListener {
	
	/**资源声明*/
	private Button startNext = null ; 
	private ListView firstPage = null ;
	private ListView secondPage = null ;
	
	/**列表项声明*/
	private static final String firstItem[] = 
		{"海阔人生","光辉岁月","无尽空虚","真的爱你","岁月无声","灰色轨迹","再见理想"};
	
	private static final String secondItem[] = 
		{"洗唰唰","爱啦啦","喜欢你","娃哈哈","小马果","大坏蛋","冷雨夜"};
	
	/**列表页面切换动画插值器声明一*/
	private Interpolator accelerator = new AccelerateInterpolator();
    private Interpolator decelerator = new DecelerateInterpolator();
	
    /**动画插值器二:效果五与效果六都为以下插值器*/
    private Interpolator  accelerator1= new  CycleInterpolator(45f);
    private Interpolator  decelerator1= new  OvershootInterpolator();
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        init();
    }

	
	/**
	 * 初始化实现
	 */
	private void init(){
		
		/**资源定位,添加监听*/
		startNext = (Button)findViewById(R.id.startNext);
		startNext.setOnClickListener(this);
		
		firstPage = (ListView)findViewById(R.id.firstPage);
		secondPage = (ListView)findViewById(R.id.secondPage);
		
		ArrayAdapter<String> firstAdapter = new ArrayAdapter<String>
			(this, android.R.layout.simple_list_item_1,firstItem);
		ArrayAdapter<String> secondAdapter = new ArrayAdapter<String>
			(this, android.R.layout.simple_list_item_1, secondItem);
		
		firstPage.setAdapter(firstAdapter);
		secondPage.setAdapter(secondAdapter);
		
	}
	
	@Override
	public void onClick(View v) {
		changePage();
	}


	/*
	 * 实现列表页面切换
	 */
	private void changePage() {
		
		final ListView visiable  ;
		final ListView invisiable ;
		
		if(firstPage.getVisibility() == View.GONE){
			visiable = secondPage ; 
			invisiable = firstPage ; 
		}else{
			visiable = firstPage ; 
			invisiable = secondPage ; 
		}
		
		
		/*
		 * 这个地方大家可能看到了ObjectAnimator这个类,一开始我也不知道是什么东西,很简单,查官方文档,
		 * 官方文档中的解释一堆英文,我一直说的,我英文烂的要死,但不怕,只要你想,就肯定可以查出来的,大家
		 * 只看一句:该类是 ValueAnimator的子类,可以根据给定的属性名称给目标对象设置动画参数
		 */
		
		
		//效果一(此处效果顺序与效果图一一对应)
			  /*final ObjectAnimator invisToVis = ObjectAnimator.ofFloat(invisiable, "rotationX",-90f, 0f);
			  ObjectAnimator visToInvis = ObjectAnimator.ofFloat(visiable, "rotationX", 0f, 90f);*/
		
		//效果二
			  final ObjectAnimator invisToVis = ObjectAnimator.ofFloat(invisiable, "rotationY",-90f, 0f);
			  ObjectAnimator visToInvis = ObjectAnimator.ofFloat(visiable, "rotationY", 0f, 90f);
		
		//效果三(这个地方的alpha属性值大家只记一点:值越大越不透明就可以了!!!)
			  /*final ObjectAnimator invisToVis = ObjectAnimator.ofFloat(invisiable, "alpha", 0.0f, 1.0f );
			  ObjectAnimator visToInvis = ObjectAnimator.ofFloat(visiable, "alpha", 1.0f, 0.0f );*/
	    
			  
	    /*
	     *效果四(此于是我犯的一个错误,很天真的以为应该也有rotationZ属性名称,其实是错的,
	     *在ofFloat参数中并无此属性名称,但大家还是可以看到列表正常,其实显示 效果很不正常了
	     *因为后台已经报错,但应用仍然不会停止 ,照常运行,但效果仅仅是两个ListView直接替换,
	     *并无任何动画添加到其中,这个地方大家注意下): 
	     *  ObjectAnimator.ofFloat(invisiable, "rotationZ",-90f, 0f);
	     */
			  
			  
	        visToInvis.setDuration(500);
	        visToInvis.setInterpolator(accelerator);
	        invisToVis.setDuration(500);
	        invisToVis.setInterpolator(decelerator);
	        
	        /*
	         *这个地方记录下,下面这个监听器小马第一次见到,查阅官方文档解释如下:
	         *此监听来监听动画的生命周期如:开始、结束、正在播放、循环播放等 ,
	         *此处切记: Animation是不可以监听动画的,它只负责动画的
	         */
	        visToInvis.addListener(new AnimatorListenerAdapter() {
	            @Override
	            public void onAnimationEnd(Animator anim) {
	            	
	            	/*
	            	 * 列举几个动画的监听:
	            	 * 一:anim.isRunning(){//TODO}
	            	 * 二:anim.isStarted(){//TODO}
	            	 * 三:anim.end(){//TODO}
	            	 */
	            	
	            	visiable.setVisibility(View.GONE);
	                invisToVis.start();
	                invisiable.setVisibility(View.VISIBLE);
	            }
	        });
	        visToInvis.start();
	}
	
}



猜你喜欢

转载自trylovecatch.iteye.com/blog/1933397