0

Androidアプリで中央のピボットを中心に画像を回転させたかったのですが、コードは次のとおりです..

package com.android.maddy.canvs;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;

import android.os.Handler;
import android.provider.OpenableColumns;
import android.view.MotionEvent;
import android.view.View;

public class drawview extends View {
    private Drawable d[]=new Drawable[2];

    Boolean done=false;
    Handler h;
    float th=0;
    public drawview(Context context) {
        super(context);
        d[0]=context.getResources().getDrawable(R.drawable.appdatabk);
        d[1]=context.getResources().getDrawable(R.drawable.appdata);
        h = new Handler();
    }

    Runnable r =new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub

            th++;
            invalidate();
        }
    };

    public void onDraw(Canvas c){
        super.onDraw(c);
        Paint p =new Paint();
        Rect imageBounds = c.getClipBounds();  // for the background
        d[0].setBounds(imageBounds);

        d[0].draw(c);

        Matrix m = new Matrix();
        m.setTranslate(getWidth()/2, getHeight()/2);        
        m.preRotate(th,43,160); //my image is 86x320

        Bitmap b =     BitmapFactory.decodeResource(getResources(),R.drawable.appdata);//image of the bottle i want to rotate
        c.drawBitmap(b,m, p);
        p.setColor(Color.BLUE);
        h.postDelayed(r,1);


    }



    }

ここで何が起こるかというと、行列の計算によって回転速度が遅くなるため、出力が遅くなります。行列を使用せずに中心ピボットを中心に画像を回転させる別の方法がある場合、または他の方法がある場合は、助けてください。また、行列を削除し、drawBitmap() 関数で x+r*(Math.cos(th)) と y+r*(Math.sin(th)) を使用して回転を確認しましたが、正常に動作しますが、画像は回転しませんピボット周り..助けてください..ありがとう

4

2 に答える 2