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.

  • Android: onPreviewFrame nunca llamado sin SurfaceView
  • Android Cómo obtener una vista previa de una imagen, utilizando su ruta de acceso desde SDcard, desde mi aplicación
  • Android: una nueva pregunta GUI - ¿cómo declarar viewGroup, sin formato de archivo XML?
  • Configurar la tipografía de la sugerencia en TextEdit
  • Toca dos vistas al mismo tiempo en android
  • Obtener nuevo mapa de bits de imagen escalada y visible
  • Android - Llamando GONE y VISIBLE hace que la vista se muestre en el lugar equivocado
  • Cómo tener un ImageButton transparente: Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.