Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Recorte de visualización de Android

¿Hay alguna manera de definir la región de clip de un ViewGroup en android (Honeycomb)? Por ejemplo, tengo un ListView con un fondo de imagen que tiene esquinas redondeadas. Mientras me desplazo a través de la lista, los niños se pegan más allá de las esquinas del fondo – yo preferiría que el clip en las esquinas redondeadas. Izquierda: sin cortar, Derecha: recortada

La imagen de la izquierda es lo que está haciendo actualmente, y la derecha es lo que me gustaría.

  • Android: notifyDataSetChanged (); no funciona
  • Cambiar el fondo popupMenu en Android
  • Android ListView y OnClickListener: Cómo obtener el elemento seleccionado
  • La aplicación de Android no iniciará noClassDefFoundError
  • Android XML redondeado esquinas recortadas
  • Cómo generar clases java desde el archivo WSDL
  • Yo estaba mirando ClipDrawable, pero parece que esto sólo se puede utilizar para las barras de progreso?

    También, estoy intentando hacer esto en un widget. Así que no puedo usar una vista personalizada y anular onDraw para enmascarar.

    ¡Gracias!

  • Android: Tamaño decreciente del botón
  • Excepción android.view.WindowLeaked
  • Android: ¿Cómo organizar los recursos del proyecto?
  • ¿Cómo controlar el sensor de proximidad?
  • ¿Cómo crear correctamente un Tablayout ahora que la Tabactivity está obsoleta?
  • Modelo de memoria VM y Java de Dalvik (Programación simultánea en Android)
  • 7 Solutions collect form web for “Recorte de visualización de Android”

    Intente subclasificar ViewGroup y reemplazando el método OnDraw de la siguiente manera, sustituyendo los valores de RADIUS_IN_PIXELS:

    @Override protected void onDraw(Canvas canvas) { Path clipPath = new Path(); clipPath.addRoundRect(new RectF(canvas.getClipBounds()), RADIUS_IN_PIXELS, RADIUS_IN_PIXELS, Path.Direction.CW); canvas.clipPath(clipPath); super.onDraw(canvas); } 

    … y también crear una costumbre dibujable como esto llamado algo como "redondeado", sustituyendo en YOUR_BACKGROUND_COLOR y RADIUS_IN_DP, asegurándose de que coincida con el redondeo del rectángulo en DP a su radio de recorte anterior en PX:

     <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="RADIUS_IN_DP" /> <solid android:color="YOUR_BACKGROUND_COLOR"/> </shape> 

    A continuación, puede utilizar esa subclase en su diseño, agregando las líneas

     android:background="@drawable/rounded" android:clipChildren="true" 

    Todos los niños se ajustarán a los límites que especifique en OnDraw (), y se añadirá un fondo basado en su "redondeado" dibujable.

    Crear diseño personalizado con overridden onDraw(Canvas canvas)

    Llame a canvas.clipRect(0, 0, mCanvasWidth, mCanvasHeight);

    Esto recortará todas las vistas que salgan del límite de diseño.

    Y no olvide llamar a setWillNotDraw(false) en el constructor, para que su onDraw se ejecute

    ¿Cómo sobre esto: Cómo hacer que una vista de Android a un mapa de bits , a continuación, el clip de mapa de bits.

    O, otra idea, use FrameLayout , apile su máscara de clip en la parte superior de su ViewGroup. La máscara de clip tendría bordes intermedios y opacos transparentes.

    En ambos casos, supongo que será difícil manejar la entrada del usuario …

    Si echa un vistazo a WhatsUp puede ver que en la imagen de contacto hay una imagen redondeada por un borde redondeado. Para hacer esto he puesto el ImageView dentro de FrameLayout (FrameLayout porque uso ProgressBar delante de la imagen para notificar la carga [realmente invisible]) que tiene borde redondeado. La imagen tiene una forma cuadrada, pero para refinarla, es necesario trabajar con lienzo.

    Echa un vistazo a este enlace que resolverá tu problema;)

    Puede ser que pueda utilizar el método Canvas.clipRegion para recortar las diferencias de las vistas.

     Path p = new Path() // define your clipping path... canvas.clipPath(p); 

    Dar android: clipToPadding un intento. Resolverá su problema.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.