В android Canvas почему матрица работает слишком медленно и вялоAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 В android Canvas почему матрица работает слишком медленно и вяло

Сообщение Anonymous »

Я хотел повернуть изображение в приложении 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. потому что (th)) и y+r*(Math.sin(th)) работает нормально, но изображение не вращается вокруг оси.
Пожалуйста, помогите..
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/160 ... d-sluggish
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»