在X轴或Y轴上翻转Drawable

Sna*_*ler 4 java android drawable

似乎是一个愚蠢的问题,但我看不到任何方法使用Drawable类中的方法来做到这一点.然后我想也许我不得不以某种方式翻转画布......仍然找不到合适的方法.

我只需要在它的y轴上"翻转"Drawable ...中心y最好.我怎样才能做到这一点?

Err*_*454 8

从10k英尺的高度,您需要创建一个新的位图并指定一个转换矩阵来翻转位图.

这可能有点矫枉过正,但这里有一个小样本应用程序,说明了如何执行此操作.如上所述,变换矩阵预分频(-1.0f,1.0f)在x方向上翻转图像,预分频(1.0f,-1.0f)将在y方向上翻转它.

public class flip extends Activity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //Set view to our created view
        setContentView(new drawView(this));
    }

    private class drawView extends View{
        public drawView(Context context){
            super(context);
        }

        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);

            //Load the jellyfish drawable
            Bitmap sprite = BitmapFactory.decodeResource(this.getResources(), R.drawable.jellyfish);

            //Create a matrix to be used to transform the bitmap
            Matrix mirrorMatrix = new Matrix();

            //Set the matrix to mirror the image in the x direction
            mirrorMatrix.preScale(-1.0f, 1.0f);

            //Create a flipped sprite using the transform matrix and the original sprite
            Bitmap fSprite = Bitmap.createBitmap(sprite, 0, 0, sprite.getWidth(), sprite.getHeight(), mirrorMatrix, false);

            //Draw the first sprite
            canvas.drawBitmap(sprite, 0, 0, null);

            //Draw the second sprite 5 pixels to the right of the 1st sprite
            canvas.drawBitmap(fSprite, sprite.getWidth() + 5, 0, null);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)