tienen texto que página propiedad para palabra las incluir imágenes imagenes imagen función fotos explique etiquetas esta enfoque contengan con clave atributos atributo alternativo android rotation android-canvas angle

android - texto - seo de las imagenes



Imagen giratoria en un lienzo en Android (5)

@Reham: mira este código de ejemplo a continuación,

public class bitmaptest extends Activity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); LinearLayout linLayout = new LinearLayout(this); // load the origial BitMap (500 x 500 px) Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), R.drawable.android); int width = bitmapOrg.width(); int height = bitmapOrg.height(); int newWidth = 200; int newHeight = 200; // calculate the scale - in this case = 0.4f float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; // createa matrix for the manipulation Matrix matrix = new Matrix(); // resize the bit map matrix.postScale(scaleWidth, scaleHeight); // rotate the Bitmap matrix.postRotate(45); // recreate the new Bitmap Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, width, height, matrix, true); // make a Drawable from Bitmap to allow to set the BitMap // to the ImageView, ImageButton or what ever BitmapDrawable bmd = new BitmapDrawable(resizedBitmap); ImageView imageView = new ImageView(this); // set the Drawable on the ImageView imageView.setImageDrawable(bmd); // center the Image imageView.setScaleType(ScaleType.CENTER); // add ImageView to the Layout linLayout.addView(imageView, new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT ) ); // set LinearLayout as ContentView setContentView(linLayout); } }

tienes que usar la matriz para rotar la imagen mira las líneas

matrix.postRotate(45); -

esto rotará la imagen a 45 grados

Espero que esto te ayude ... gracias

Quiero rotar la imagen de acuerdo con un ángulo específico en Android, algo así como una brújula ...

Tengo este código ... funciona en drawPath () pero quiero reemplazar la ruta y el dibujo con la imagen .. Intenté crear una imagen de mapa de bits, DrawBitmapImage, pero la imagen no gira como la ruta ... Cualquiera ¿Ayuda por favor?

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); }


Este es el único que funcionó para mí sin ningún problema.

private Bitmap rotateBitmap(Bitmap bitmap, int rotationAngleDegree){ int w = bitmap.getWidth(); int h = bitmap.getHeight(); int newW=w, newH=h; if (rotationAngleDegree==90 || rotationAngleDegree==270){ newW = h; newH = w; } Bitmap rotatedBitmap = Bitmap.createBitmap(newW,newH, bitmap.getConfig()); Canvas canvas = new Canvas(rotatedBitmap); Rect rect = new Rect(0,0,newW, newH); Matrix matrix = new Matrix(); float px = rect.exactCenterX(); float py = rect.exactCenterY(); matrix.postTranslate(-bitmap.getWidth()/2, -bitmap.getHeight()/2); matrix.postRotate(rotationAngleDegree); matrix.postTranslate(px, py); canvas.drawBitmap(bitmap, matrix, new Paint( Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG | Paint.FILTER_BITMAP_FLAG )); matrix.reset(); return rotatedBitmap; }


Primero debe rotar el lienzo y luego dibujar lo que desee. Entonces el objeto dibujado aparecerá como girado en la pantalla.

canvas.rotate(45); // degrees to rotate

intenta esto de una buena manera.

Consulte este tutorial para obtener información sobre cómo dibujar mapa de bits y cómo rotar el lienzo

Ver el tutorial completo


Puedes rotar tu mapa de bits cuando lo dibujas usando una matriz:

Matrix matrix = new Matrix(); matrix.setRotate(angle, imageCenterX, imageCenterY); yourCanvas.drawBitmap(yourBitmap, matrix, null);

También puede hacerlo girando el lienzo antes de dibujar:

yourCanvas.save(Canvas.MATRIX_SAVE_FLAG); //Saving the canvas and later restoring it so only this image will be rotated. yourCanvas.rotate(-angle); yourCanvas.drawBitmap(yourBitmap, left, top, null); yourCanvas.restore();

Elija el que más le convenga.


Usa el siguiente código funcionó para mí

rotación del flotador = 30.0f;

Bitmap bitmap = your bitmap Rect rect = new Rect(100,100,bitmap.width, bitmap.height); Matrix matrix = new Matrix(); float px = rect.exactCenterX(); float py = rect.exactCenterY(); matrix.postTranslate(-bitmap.getWidth()/2, -bitmap.getHeight()/2); matrix.postRotate(rotation); matrix.postTranslate(px, py); canvas.drawBitmap(bitmap, matrix, null); matrix.reset(); invalidate();