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 !!

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.

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); } }); 
  • Los colores de ShapeRenderer dejan de funcionar al renderizar imágenes con SpriteBatch
  • PorterDuff y ruta
  • Androide: dibujar fuera de la ruta cerrada en lugar de dentro
  • Cómo borrar el dibujo anterior en lienzo?
  • Añadir opaco "sombra" (esquema) a Android TextView
  • DrawBitmap: ¿Cómo se pueden establecer coordenadas y utilizar una matriz?
  • Android OpenGL ES - Cómo dibujar un polígono cóncavo lleno?
  • Cómo asignar coordenadas de marco a superposición en la visión
  • Android: ¿Cómo obtener una vista personalizada para volver a dibujar parcialmente?
  • Los datos del adaptador RecycleView aparecen erróneos al desplazarse demasiado rápido
  • Animación de texto en lienzo - Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.