android imageview prensa larga y prensa regular

Tengo una visión de la imagen donde necesito tener ambas presiones largas (para un menú del contexto) y las prensas regulares que trabajan. Puedo conseguir uno u otro trabajo, pero no ambos. ¿Qué me perdí? El código abajo sólo funciona para las prensas regulares. En cuanto toco la pantalla, comienza a ejecutar el código onTouch.

ImageView image = (ImageView)findViewById(R.id.visible_image); image.setLongClickable(true); image.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: // disable the screen taps for 500ms DecodeActionDownEvent(v, ev, bm2); case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_UP: } return true; } }); registerForContextMenu(image); 

  @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.setHeaderTitle("Edit"); ArrayList<String> menuItems = new ArrayList<String>(); menuItems.add("Edit page settings"); menuItems.add("Edit page objects"); menuItems.add("Edit this object"); for (int i = 0; i<menuItems.size(); i++) { menu.add(Menu.NONE, i, i, menuItems.get(i)); } } 

Puedes intentar hacerlo de esta manera:

 ImageView imageView = (ImageView) findViewById(R.id.ImageView); imageView.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { //your stuff return true; } }); imageView.setOnClickListener(new OnClickListener() { @Override public boolean onClick(View v) { //your stuff return true; } }); 

Para obtener coordenadas x e y, defina un oyente táctil

  ImageView.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { //And u can get x and y values like: x = event.getX(); y = event.getY() ; } } 

Después de mucho buscar y experimentar esta es la mejor solución que he encontrado para lograr este tipo de comportamiento:

 //Define these variables at the beginning of your Activity or Fragment: private long then; private int longClickDuration = 5000; //for long click to trigger after 5 seconds ... ImageView imageView = (ImageView) findViewById(R.id.visible_image); imageView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { then = (long) System.currentTimeMillis(); } else if (event.getAction() == MotionEvent.ACTION_UP) { if ((System.currentTimeMillis() - then) > longClickDuration) { /* Implement long click behavior here */ System.out.println("Long Click has happened!"); return false; } else { /* Implement short click behavior here or do nothing */ System.out.println("Short Click has happened..."); return true; } } return true; } }); 
  • Cómo girar un drawable con anti-aliasing habilitado
  • Dibujar un rectángulo detrás de ImageView personalizado que no anima
  • Android ImageView escala la imagen más pequeña al ancho con altura flexible sin recortar ni distorsionar
  • Android eclipse añadir estado pulsado a ImageView
  • Dibuja una imagen en modo FullScreen Android
  • Galería de imágenes con ViewPager + zoom en ImageViews
  • El efecto Ripple no va por encima de ImageView
  • Cómo obtener color en el punto (o píxel) de una imagen en evento táctil en android
  • Cómo leer bits extraíbles como InputStream
  • Hacer una imagen circular con borde circular blanco
  • No se puede cargar la imagen de url utilizando picasso
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.