闺蜜头像一对三张动漫:java
来源:百度文库 编辑:九乡新闻网 时间:2024/05/21 23:42:32
java-universal-tween-engine,一个动画系统库
- 博客分类:
- android
可以用来创建平滑的移动系统,比如循环,移动,旋转等。由于项目使用纯java写成,所以支持swt,swing,android,opengles等。Tween缓冲大家应该都不陌生,说白了就是从一起始位置逐渐移动到目标位置的过程,这个过程可以是加速移动,也可以是减速移动,这些不同的缓动方式就是Tween的各种ease。
源码在最后,将其解压后复制到src就可以了。
用法,先定义一个需要运动的物体:
Java代码
- public class Particule {
- private float x, y;
- public float getX() {
- return x;
- }
- public float getY() {
- return y;
- }
- public void setX(float x) {
- this.x = x;
- }
- public void setY(float y) {
- this.y = y;
- }
- }
public class Particule {private float x, y;public float getX() {return x;}public float getY() {return y;}public void setX(float x) {this.x = x;}public void setY(float y) {this.y = y;}}
然后,实现Tweenable接口,用于表明运动的返回值和变化值
Java代码
- import aurelienribon.tweenengine.Tweenable;
- public class TweenableParticule implements Tweenable {
- // The following lines define the different possible tween types.
- // It's up to you to define what you need :-)
- public static final int X = 1;
- public static final int Y = 2;
- public static final int XY = 3;
- // Composition pattern
- private Particule target;
- // Constructor
- public TweenableParticule(Particule particule) {
- this.target = particule;
- }
- // Tweenable implementation
- @Override
- public int getTweenValues(int tweenType, float[] returnValues) {
- switch (tweenType) {
- case X: returnValues[0] = target.getX(); return 1;
- case Y: returnValues[0] = target.getY(); return 1;
- case XY:
- returnValues[0] = target.getX();
- returnValues[1] = target.getY();
- return 2;
- default: assert false; return 0;
- }
- }
- @Override
- public void onTweenUpdated(int tweenType, float[] newValues) {
- switch (tweenType) {
- case X: target.setX(newValues[0]); break;
- case Y: target.setY(newValues[1]); break;
- case XY:
- target.setX(newValues[0]);
- target.setY(newValues[1]);
- break;
- default: assert false; break;
- }
- }
- }
import aurelienribon.tweenengine.Tweenable;public class TweenableParticule implements Tweenable {// The following lines define the different possible tween types.// It's up to you to define what you need :-)public static final int X = 1;public static final int Y = 2;public static final int XY = 3;// Composition patternprivate Particule target;// Constructorpublic TweenableParticule(Particule particule) {this.target = particule;}// Tweenable implementation@Overridepublic int getTweenValues(int tweenType, float[] returnValues) {switch (tweenType) {case X: returnValues[0] = target.getX(); return 1;case Y: returnValues[0] = target.getY(); return 1;case XY:returnValues[0] = target.getX();returnValues[1] = target.getY();return 2;default: assert false; return 0;}}@Overridepublic void onTweenUpdated(int tweenType, float[] newValues) {switch (tweenType) {case X: target.setX(newValues[0]); break;case Y: target.setY(newValues[1]); break;case XY:target.setX(newValues[0]);target.setY(newValues[1]);break;default: assert false; break;}}}
最后,在Activity中运动:
Java代码
- 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 stub
- paint=new Paint();
- paint.setAntiAlias(true);
- paint.setColor(Color.RED);
- paint.setStyle(Paint.Style.FILL_AND_STROKE);
- invalidate();
- }
- @Override
- protected void onDraw(Canvas canvas) {
- // TODO Auto-generated method stub
- //super.onDraw(canvas);
- canvas.drawCircle(particule.getX(), particule.getY(), 20, paint);
- manager.update();
- invalidate();
- }
- }
- }
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;@Overridepublic 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();}@Overrideprotected void onResume() {super.onResume();}@Overrideprotected 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();}}}
- aurelienribon.rar (16 KB)
- 描述: 动画库
- 下载次数: 16
- TweenEngine-lib-4.3.zip (29.7 KB)
- 描述: jar和源码
- 下载次数: 12
java
java 监听器
JAVA总结
Java继承
java概念
Java ME
Java诠释
java BMP
java?instanceof
Java虚拟机
java爱好者
Java免费教程 Java源码下载 Java控件 Java实例基础 Java函数
Java Java 源代码 Java电子书 Java资料下载 Java论坛 电子先锋
Java学习路径 Java学习路径
Java学习总结之第一章Java基础
内存不足 java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
手机指南针软件java
java运行时异常
Ue java 配置
java时间格式大全
ubuntu 安装java jdk
Java Web Framework综述
java调用.net webservice1