Android: Cómo poner elementos personalizados en un círculo / destino

Necesito crear una especie de objetivo y añadir objetos a él, que tienen diferentes colores y hacer cosas diferentes cuando hago clic directamente en ellos.

¿Alguna sugerencia sobre cómo lograr esto? Tal vez hay una biblioteca que puedo usar?

Círculos en el teléfono Círculos con objetos personalizados item seleccionado

2 Solutions collect form web for “Android: Cómo poner elementos personalizados en un círculo / destino”

La solución formal es

Crear roundedshape.xml dentro de roundedshape.xml

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:innerRadiusRatio="4" android:shape="ring" android:thicknessRatio="5" android:useLevel="false"> <solid android:color="#af08d7" /> <size android:width="25dip" android:height="25dip"></size> </shape> </item> </layer-list> 

Agregue RelativeLayout teniendo android:background="@drawable/roundedshape"

 <RelativeLayout android:layout_width="fill_parent" android:layout_height="300dp" android:padding="50dp" android:background="@drawable/roundedshape" android:id="@+id/myRelativeLayout" > </RelativeLayout> 

En su Activity añada estos códigos para generar dinámicamente ImageButtons y agregar en Layout .

  RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.myRelativeLayout); for (int j = 0; j < 4; j++) { ImageButton myImageButton = new ImageButton(this); //generate ImageButton myImageButton.setId(j); //Set Id of button //Generate Random Number to place ImageButtons in random position int min = 40; int max = 60; Random r = new Random(); int randomNum = r.nextInt(max - min + 1) + min; myImageButton.setBackgroundResource(R.drawable.chatbox); //Set background of ImageButton RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100, 100); params.leftMargin = randomNum+j*randomNum; //Generate left margin dynamically params.topMargin = randomNum +j*randomNum; //Generate right margin dynamically relativeLayout.addView(myImageButton, params); //Add view myImageButton.setOnClickListener(getButtonAndDoAction(myImageButton)); //Add OnClickListener } 

Agregue este método en Activity para manejar el evento de clic de sus botones de imagen.

 View.OnClickListener getButtonAndDoAction(final ImageButton button) { return new View.OnClickListener() { public void onClick(View v) { Toast.makeText(MainActivity.this, "button clicked" +button.getId(), Toast.LENGTH_SHORT).show(); } }; 

RESULTADO:

Introduzca aquí la descripción de la imagen

NOTA: He añadido comentarios para que los códigos sean lo más claros posible

Podrías dibujar tu imagen como:

  1. Vistas separadas – como en la respuesta proporcionada utilizando RelativeLayout
  2. Dibujar sobre lienzo
  3. Utilice opengl / bibliotecas de gráficos existentes.

Depende de tus objetivos, tal vez necesites un diseño personalizado, tal vez algunos sprites en tu juego o quizás bitmap para guardar en el sistema de archivos.

  • Crear ImageView de forma programática sin diseño
  • Toca dos vistas al mismo tiempo en android
  • ¿Existen bibliotecas de terceros para Android?
  • Android Move ImageView
  • Cómo averiguar si una vista de Android está oscurecida por cualquier otra vista
  • Android: ¿Cómo hacer una vista previa de cámara en forma de círculo?
  • Cómo escalar el video en un SurfaceView más grande que la ventana en Android?
  • WindowManager con animación (¿es posible?)
  • SuperficieCreada () Nunca llamado
  • ¿Centrar el texto verticalmente independientemente de la altura de la vista?
  • GetWidth () y getHeight devuelven cero después de onMeasure () (dispositivos específicos)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.