Android Open Source - slider Piece Drawer Factory From Project Back to project page slider .
License The source code is released under:
Apache License
If you think the Android project slider listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code package de.devisnik.android.sliding.tile;
/ * w w w . j a v a 2 s . c o m * /
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Bitmap.Config;
import de.devisnik.android.sliding.Settings;
import de.devisnik.sliding.Point;
public class PieceDrawerFactory {
private final int itsWidth;
private final int itsHeight;
private final Settings itsSettings;
private final Point itsPieceSize;
PieceDrawerFactory(final int width, final int height, final Settings settings) {
itsWidth = width;
itsHeight = height;
itsSettings = settings;
itsPieceSize = Point.divide(width, height, settings.getFrameSize(width, height));
}
public IPieceDrawer create() {
if (itsSettings.isUseDefaultImage())
return createCachedNumberDrawer();
Bitmap storedImage = itsSettings.readImage();
if (storedImage == null)
return createCachedNumberDrawer();
return new ImagePieceDrawer(createTargetBitmap(storedImage), itsPieceSize);
}
private Bitmap createTargetBitmap(final Bitmap bitmap) {
if (bitmap == null)
return null;
Config bitmapConfig = bitmap.getConfig();
Bitmap output = Bitmap.createBitmap(itsWidth, itsHeight, bitmapConfig == null ? Config.ARGB_8888
: Config.ARGB_8888);
Canvas canvas = new Canvas(output);
Paint paint = new Paint();
Rect clipRect = computeClipRectangle(bitmap);
Rect targetRect = new Rect(0, 0, itsWidth, itsHeight);
paint.setAntiAlias(true);
canvas.drawBitmap(bitmap, clipRect, targetRect, paint);
return output;
}
private Rect computeClipRectangle(final Bitmap bitmap) {
float targetRatio = ((float ) itsWidth) / itsHeight;
Point bitmapArea = new Point(bitmap.getWidth(), bitmap.getHeight());
float bitmapRatio = bitmapArea.ratio();
Point clipArea = bitmapArea.copy();
if (targetRatio <= bitmapRatio)
clipArea.x = Math.round(targetRatio * clipArea.y);
else
clipArea.y = Math.round(clipArea.x / targetRatio);
Point shift = Point.diff(bitmapArea, clipArea).divideBy(2);
return new Rect(shift.x, shift.y, clipArea.x + shift.x, clipArea.y + shift.y);
}
private IPieceDrawer createCachedNumberDrawer() {
return new BitmapCachingPieceDrawer(new NumberPieceDrawer(itsPieceSize));
}
}
Java Source Code List de.devisnik.android.sliding.ARandom.java de.devisnik.android.sliding.FPSCounter.java de.devisnik.android.sliding.FrameDrawer.java de.devisnik.android.sliding.ISpeed.java de.devisnik.android.sliding.ImageCache.java de.devisnik.android.sliding.ImageFactory.java de.devisnik.android.sliding.Logger.java de.devisnik.android.sliding.OpenActivity.java de.devisnik.android.sliding.OpenPreviewActivity.java de.devisnik.android.sliding.PropertiesBuilder.java de.devisnik.android.sliding.RenderHandler.java de.devisnik.android.sliding.Replayer.java de.devisnik.android.sliding.Settings.java de.devisnik.android.sliding.SlidingPreferences.java de.devisnik.android.sliding.SlidingWallpaper.java de.devisnik.android.sliding.SpeedFactory.java de.devisnik.android.sliding.SummaryUpdater.java de.devisnik.android.sliding.tile.BitmapCachingPieceDrawer.java de.devisnik.android.sliding.tile.CachingPieceDrawer.java de.devisnik.android.sliding.tile.IPieceDrawer.java de.devisnik.android.sliding.tile.ImagePieceDrawer.java de.devisnik.android.sliding.tile.NumberPieceDrawer.java de.devisnik.android.sliding.tile.PieceDrawerFactory.java de.devisnik.android.sliding.tile.TileShifter.java de.devisnik.android.sliding.tile.TileStore.java de.devisnik.android.sliding.tile.Tile.java de.devisnik.sliding.FrameFactory.java de.devisnik.sliding.FrameScrambler.java de.devisnik.sliding.FromHomeShiftingEvent.java de.devisnik.sliding.IFrameListener.java de.devisnik.sliding.IFrame.java de.devisnik.sliding.IHole.java de.devisnik.sliding.IMove.java de.devisnik.sliding.IPiece.java de.devisnik.sliding.IRandom.java de.devisnik.sliding.IRobotFrame.java de.devisnik.sliding.IShifterListener.java de.devisnik.sliding.MoveFactory.java de.devisnik.sliding.Point.java de.devisnik.sliding.ShiftingEvent.java de.devisnik.sliding.ToHomeShiftingEvent.java de.devisnik.sliding.animation.AccelerateDecelerateInterpolator.java de.devisnik.sliding.animation.AnimationRunner.java de.devisnik.sliding.animation.Animation.java de.devisnik.sliding.animation.IInterpolator.java de.devisnik.sliding.animation.IMovement.java de.devisnik.sliding.animation.IShiftable.java de.devisnik.sliding.animation.LinearInterpolator.java de.devisnik.sliding.animation.MetaShiftable.java de.devisnik.sliding.animation.ShiftAnimation.java de.devisnik.sliding.animation.Translation.java de.devisnik.sliding.impl.Frame.java de.devisnik.sliding.impl.Hole.java de.devisnik.sliding.impl.Move.java de.devisnik.sliding.impl.PieceIterator.java de.devisnik.sliding.impl.Piece.java de.devisnik.sliding.impl.RobotFrame.java de.devisnik.sliding.impl.Scrambler.java