java-universal-tween-engine,一个动画系统库
http://code.google.com/p/java-universal-tween-engine/
可以用来创建平滑的移动系统,比如循环,移动,旋转等。由于项目使用纯java写成,所以支持swt,swing,android,opengles等。Tween缓冲大家应该都不陌生,说白了就是从一起始位置逐渐移动到目标位置的过程,这个过程可以是加速移动,也可以是减速移动,这些不同的缓动方式就是Tween的各种ease。
源码在最后,将其解压后复制到src就可以了。
用法,先定义一个需要运动的物体:
import android.app.Activity;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.Bundle;import android.view.View;import aurelienribon.tweenengine.Tween;import aurelienribon.tweenengine.TweenGroup;import aurelienribon.tweenengine.TweenManager;import aurelienribon.tweenengine.Tweenable;import aurelienribon.tweenengine.equations.*;import com.ql.test.Particule;import com.ql.test.TweenableParticule;/** * http://code.google.com/p/java-universal-tween-engine/ * @author admin * */public class Screen4 extends Activity {Particule particule;TweenManager manager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);// setContentView(R.layout.screen_4);//Button btn_11=(Button)findViewById(R.id.btn_11); setContentView(new ScreenView(this));// Let's say we are working with an Android target. We need to pool our objects.Tween.setPoolEnabled(true);// We also need a manager to handle every tween.manager = new TweenManager();// We can now create as many interpolations as we need !particule=new Particule();particule.setX(100);particule.setY(100);Tweenable tweenParticle=new TweenableParticule(particule);Tween tween = Tween.to(tweenParticle, TweenableParticule.XY, 10000, Cubic.OUT).target(400, 500);manager.add(tween.start());tween = Tween.to(tweenParticle, TweenableParticule.XY, 10000, Bounce.OUT).target(100, 500).delay(10000);manager.add(tween.start());//TweenGroup tweenGroup=new TweenGroup().pack(//Tween.set(tweenParticle, TweenableParticule.XY),//Tween.to(tweenParticle, TweenableParticule.XY, 10000, Sine.OUT),//Tween.from(tweenParticle, TweenableParticule.XY, 10000, Sine.OUT),//Tween.to(tweenParticle, TweenableParticule.XY, 10000, Bounce.OUT)//);//manager.add(tweenGroup.sequence().repeat(2,5000).start());//TweenGroup tweenGroup= new TweenGroup().pack(// Tween.to(tweenParticle, TweenableParticule.XY, 500, Quad.INOUT).target(200),// Tween.to(tweenParticle, TweenableParticule.XY, 500, Quad.INOUT).target(100),// Tween.to(tweenParticle, TweenableParticule.XY, 500, Quad.INOUT).target(200).delay(1000)//).sequence().start(); } @Override protected void onResume() { super.onResume(); } @Override protected void onPause() { super.onPause(); manager.clear(); } class ScreenView extends View{ Paint paint;public ScreenView(Context context) {super(context);// TODO Auto-generated constructor stubpaint=new Paint();paint.setAntiAlias(true);paint.setColor(Color.RED);paint.setStyle(Paint.Style.FILL_AND_STROKE);invalidate();}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stub//super.onDraw(canvas);canvas.drawCircle(particule.getX(), particule.getY(), 20, paint);manager.update();invalidate();} }}1 楼 wxw404 2011-11-01 谢谢收了 拿来用 2 楼 2006her 2012-03-09 感谢分享啊。