Dibuje Bitmap en ImageView personalizado y obtenga las coordenadas de ImageView independientemente del dispositivo
Quiero obtener las coordenadas de ImageView
, independientemente del tamaño del dispositivo.
¿Hay alguna manera posible !!
- Dibujar en lienzo por dedo, Android
- ¿Cómo animar la posición de desplazamiento? ¿Cómo desplazarse sin problemas?
- Cómo dibujar un círculo con animación en android con el tamaño del círculo basado en un valor
- Lanzar una lona de Android
- Android: ¿Cómo overlay-a-bitmap / draw-over un mapa de bits?
He intentado crear el tamaño específico para el ImageView
, incluso el tamaño específico para la Parent View
del Parent View
también, pero no está trabajando.
He intentado las siguientes maneras posibles.
int[] posXY = new int[2]; imageview.getLocationOnScreen(posXY); int MoveX = posXY[0]; int MoveY = posXY[1];
He intentado con Matrix también, pero no funciona.
Matrix m = imageview.getImageMatrix();
Probado el código abajo, pero también no está trabajando. !!
Necesito obtener las mismas Coordenadas {x, y} para todos los dispositivos para el mismo punto (Ubicación).
final float[] getPointerCoords(ImageView view, MotionEvent e) { final int index = e.getActionIndex(); final float[] coords = new float[] { e.getX(index), e.getY(index) }; Matrix matrix = new Matrix(); view.getImageMatrix().invert(matrix); matrix.mapPoints(coords); return coords; }
Aquí está dibujar Método:
Si fijo la imagen del mapa de bits en drenaje, no cabe la pantalla para cada dispositivos. Si fijo la imagen con ancho y altura de la exhibición, estoy consiguiendo diversas coordenadas.
@Override public void draw(Canvas canvas) { // TODO Auto-generated method stub super.draw(canvas); Resources res = getResources(); Drawable drawable = res.getDrawable(R.drawable.subimage); mBitmap = ((BitmapDrawable) drawable).getBitmap(); canvas.drawBitmap(mBitmap, 0, 0, null); }
Cualquier idea o ayuda sería realmente útil.
- ¿Cómo puedo dibujar una línea vertical en una actividad cuando se presiona un botón?
- No se puede dibujar en un lienzo HTML5 con Phonegap 2.7
- Coordenadas no correspondientes
- ¿Cómo dibujo una línea blanca semitransparente?
- Canvas.clipPath (ruta) no recorte como se esperaba
- ¿Cómo configurar la validación en canvas android?
- Android - drawline con aceleración de hardware y antialiasing causa artefactos
- Android: ¿Cómo llenar el color a la parte específica de la imagen solamente?
Usted tiene que calcular la proporción de la pantalla del dispositivo en primer lugar,
deviceWidth / screenHeight = ratio
Entonces usted tiene que multiplicarlo con su coordenada deseada:
ratio * xCoord = newXcoord; // and same for Y coord
De este modo, mantendrá las coordenadas equivalentes para todos los tamaños de dispositivos.
También puede declarar tamaños y coordenadas con respecto al% de dimensiones de pantalla como:
x = 0.2 * deviceWidth // %20 of device width from left
Finalmente encontró una solución relativa, Mismas coordenadas para todos los dispositivos. Uso de la actividad, no ImageView personalizado.
En ImageView OnTouch ..
public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); final int index = e.getActionIndex(); final float[] coords = new float[] { e.getX(index), e.getY(index) }; Matrix matrix = new Matrix(); choosenImageView.getImageMatrix().invert(matrix); matrix.mapPoints(coords); return true; }
Dibujar con lienzo
Resources res = getResources(); Drawable drawable = res.getDrawable(R.drawable.image); Bitmap bmp= ((BitmapDrawable) drawable).getBitmap(); alteredBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig()); canvas = new Canvas(alteredBitmap); paint = new Paint(); paint.setColor(Color.GREEN); paint.setStrokeWidth(5); matrix = new Matrix(); canvas.drawBitmap(bmp, matrix, paint);
Puedes probar esto
imageview.post(new Runnable() { @Override public void run() { int[] posXY = new int[2]; imageview.getLocationOnScreen(posXY); int MoveX = posXY[0]; int MoveY = posXY[1]; Log.i("xy co-ordinate", "x "+MoveX, "y"+MoveY); } });