voglio per ruotare l'immagine secondo un angolo specifico in Android, qualche cosa come una bussola ...Rotazione Immagine su una tela in Android
ho questo codice ... funziona su drawPath() ma voglio sostituire il percorso e la cosa del disegno con l'immagine .. Ho provato a creare un'immagine bitmap, DrawBitmapImage, ma l'immagine non ruota come il percorso .. Qualche aiuto per favore?
public void draw(Canvas canvas) {
double angle = calculateAngle(currentLongitude, currentLatitude, targetLongitude, targetLatitude);
//Correction;
angle-=90;
//Correction for azimuth
angle-=azimuth;
if((getContext() instanceof Activity) && ((Activity)getContext()).getWindowManager().getDefaultDisplay().getOrientation()==Configuration.ORIENTATION_PORTRAIT)angle-=90;
while(angle<0)angle=angle+360;
Rect rect = canvas.getClipBounds();
int height = rect.bottom-rect.top;
int width = rect.right-rect.left;
int left = rect.left;
int top = rect.top;
if(height>width){
top+=(height-width)/2;
height=width;
}
if(width>height){
left+=(width-height)/2;
width=height;
}
float centerwidth = width/2f;
float centerheight = height/2f;
Paint p = new Paint();
p.setColor(color);
p.setStyle(Paint.Style.FILL);
p.setAntiAlias(true);
float startX = left+(float)(centerwidth+Math.cos(deg2rad(angle))*width/3.0);
float startY = top+(float)(centerheight+Math.sin(deg2rad(angle))*height/3.0);
Path path = new Path();
path.moveTo(
startX,
startY);
path.lineTo(
left+(float)(centerwidth+Math.cos(deg2rad(angle+140))*width/4.0),
top+(float)(centerheight+Math.sin(deg2rad(angle+140))*height/4.0));
path.lineTo(
left+(float)centerwidth,
top+(float)centerheight
);
path.lineTo(
left+(float)(centerwidth+Math.cos(deg2rad(angle+220))*width/4.0),
top+(float)(centerheight+Math.sin(deg2rad(angle+220))*height/4.0)
);
path.lineTo(
startX,
startY
);
canvas.drawPath(path, p);
}
@Jave, penso che il primo approccio possa essere utilizzato, in particolare, dove si desidera ruotare un'immagine o una bitmap attorno all'asse xe/o all'asse y poichè 'Canvas' non ha metodi di rotazione diversi da quello che lo fa nel piano XY. Penso che si possa ottenere un oggetto 'Camera' e realizzare le trasformazioni 3D necessarie e infine usare' getMatrix' passando l'istanza 'Matrix' per ottenere la corrispondente rappresentazione' Matrix'. Infine, passa questo 'Matrix' al metodo' drawBitmap'. In particolare, [qui] (http://stackoverflow.com/questions/32554925/android-animate-rotation-of-map-marker-around-x-and-y-axis): qualsiasi idea. Grazie! –