Rotate image in android

前端 未结 5 968
自闭症患者
自闭症患者 2020-12-19 05:48

I want rotate image in both the ways Clockwise as well as Anti clock wise. I had try but not rotate image both the way, so plz give me solution for my problem if you know..

5条回答
  •  伪装坚强ぢ
    2020-12-19 06:35

    use this code hope it will be helpful... you must have to write this method to do rotate operation

    public void paintFromCenter(float angle, Canvas c) {
        Bitmap b = sprite;
        Bitmap h = b;
        Matrix matrix = new Matrix();
        matrix.postRotate(angle, h.getWidth() / 2, h.getHeight());
        matrix.postTranslate(getX(), getY());
        // canvas.drawBitmap(bitmap, matrix, new Paint());
        Bitmap bmp2 = Bitmap.createBitmap(h, 0, 0, frameWidth, frameHeight,
                matrix, true);
        c.drawBitmap(h, matrix, null);
    }
    

    in your program you have to write onTouchEvent() method

    public boolean onTouchEvent(MotionEvent event) {
        int action = event.getAction();
        if (action == MotionEvent.ACTION_DOWN) {
            edX = (int) event.getX();
            edY = (int) event.getY();
            if ((edX > objectSprite.getX()
                    && edX < objectSprite.getX() + objectSprite.getWidth()
                    && edY > objectSprite.getY() && edY < objectSprite.getY()
                    + objectSprite.getHeight())) {
            }
        }
        if (action == MotionEvent.ACTION_MOVE) {
            emX = (int) event.getX();
            emY = (int) event.getY();
            if (edX < emX && angle <= 90) {
                update(canvas);
                CHAR = 'D';
            } else if (edX > emX && angle > 0) {
                update(canvas);
                CHAR = 'U';
            }
            if (edY < emY && angle <= 90) {
                update(canvas);
                CHAR = 'L';
            } else if (edY > emY && angle >= 0) {
                update(canvas);
                CHAR = 'R';
            }
        }
        return true;
    }
    

    and you have to create update() method to rotate your angle on touch event angle can be define as your choice. Initially i have declare

    int angle=1;
    public void update(Canvas canvas) {
        switch (CHAR) {
        case 'D':
            angle += 1;
            break;
        case 'U':
            angle -= 1;
    
            break;
        case 'R':
            angle -= 1;
            break;
        case 'L':
            angle += 1;
            break;
        }
    
    }
    

    Now you have to draw your object in draw() method like this

    public void draw() {
      objectSprite.paintFromCenter(angle, canvas);  
            }
    

提交回复
热议问题