package com.daasuu.FPSAnimator; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import com.daasuu.FPSAnimator.util.UIUtil; import com.daasuu.library.Container; import com.daasuu.library.DisplayObject; import com.daasuu.library.FPSTextureView; import com.daasuu.library.callback.AnimCallBack; import com.daasuu.library.drawer.SpriteSheetDrawer; import com.daasuu.library.spritesheet.SpriteSheet; import com.daasuu.library.util.Util; import java.util.ArrayList; import java.util.List; public class SpriteSheetSampleActivity extends AppCompatActivity { private FPSTextureView mFPSTextureView; private Container mSparkContainer = new Container(); private Container mMainContainer = new Container(); public static void startActivity(Context context) { Intent intent = new Intent(context, SpriteSheetSampleActivity.class); context.startActivity(intent); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sprite_sheet_sample); mFPSTextureView = (FPSTextureView) findViewById(R.id.animation_texture_view); mFPSTextureView .addChild(mSparkContainer) .addChild(mMainContainer); final float frameWidth = Util.convertDpToPixel(82.875f, this); final float frameHeight = Util.convertDpToPixel(146.25f, this); Bitmap baseSpriteBitmapB = BitmapFactory.decodeResource(getResources(), R.drawable.spritesheet_grant); final Bitmap spriteBitmapB = Bitmap.createScaledBitmap( baseSpriteBitmapB, (int) Util.convertDpToPixel(1024f, this), (int) Util.convertDpToPixel(1024f, this), false); SpriteSheetDrawer spriteSheetDrawer = new SpriteSheetDrawer( spriteBitmapB, frameWidth, frameHeight, 64, 12) .spriteLoop(true); DisplayObject displayObject = new DisplayObject(); displayObject .with(spriteSheetDrawer) .tween() .tweenLoop(true) .transform(-Util.convertDpToPixel(82.875f, this), UIUtil.getWindowHeight(this) / 2) .toX(3000, UIUtil.getWindowWidth(this)) .end(); List<Integer> list = new ArrayList<Integer>(); for (int i = 26; i < 64; i++) list.add(i); final SpriteSheetDrawer spriteSheetDrawer2 = new SpriteSheetDrawer( spriteBitmapB, frameWidth, frameHeight, 64) .dpSize(this) .customFrameList(list) .spriteLoop(true); final DisplayObject parabolicDisplay = new DisplayObject(); parabolicDisplay .with(spriteSheetDrawer2) .parabolic() .transform(0, UIUtil.getWindowHeight(this) / 2) .initialVelocityY(-30) .rightHitCallback(new AnimCallBack() { @Override public void call() { mMainContainer.removeChild(parabolicDisplay); } }) .end(); mMainContainer .addChild(parabolicDisplay) .addChild(displayObject); createSparkles(); } private void createSparkles() { Bitmap spriteBitmapA = BitmapFactory.decodeResource(getResources(), R.drawable.spritesheet_sparkle); int spriteBitmapANum = 13; float displayWidth = UIUtil.getWindowWidth(this); float displayHeight = UIUtil.getWindowHeight(this) - UIUtil.getStatusBarHeight(this); int interval = (int) Util.convertDpToPixel(60, this); int intervalWidth = (int) (displayWidth / interval); int intervalHeight = (int) (displayHeight / interval); for (int i = 0; i <= intervalWidth; i++) { for (int j = 0; j <= intervalHeight; j++) { SpriteSheetDrawer spriteSheetDrawer = new SpriteSheetDrawer(spriteBitmapA, spriteBitmapA.getWidth() / spriteBitmapANum, spriteBitmapA.getHeight(), spriteBitmapANum, spriteBitmapANum) .spriteLoop(true) .frequency((int) (1 + Math.random() * 3)); DisplayObject displayObject = new DisplayObject(); displayObject.with(spriteSheetDrawer) .tween() .transform(i * interval, j * interval) .end(); mSparkContainer.addChild(displayObject); } } } @Override protected void onResume() { super.onResume(); mFPSTextureView.tickStart(); } @Override protected void onStop() { super.onStop(); mFPSTextureView.tickStop(); } }