ListVIew en Google Glass
¿Existe una manera posible de implementar una lista en Google Glass que se ve y funciona (desplazamiento con movimiento de la cabeza) como la lista en la pantalla principal de vidrio.
La lista que he mencionado se ve así en Glass:
- TreeMap a ArrayList Java
- Visibilidad de vista para Android en ListAdapter
- Parcel Lista de Lista de objeto Parcelable
- Borde de diseño en forma cuadrada con bordes interiores redondos
- Aplicación de presupuesto de Android, botones siguientes y posteriores
No pude encontrar ninguna documentación sobre esto por lo que cualquier ayuda sería apreciada.
- Android ListView CHOICE_MODE_MULTIPLE, cómo establecer el índice marcado?
- Android Cómo saber qué casilla de verificación está seleccionada
- Usando limit () y offset () en QueryBuilder (ANDROID, ORMLITE)
- Cómo eliminar elementos de una lista con gesto de desplazamiento como en gmail
- Android: el diálogo personalizado tarda demasiado tiempo en abrirse
- Iconos en un diálogo de lista
- Filtro ListView con CursorLoader Y FilterQueryProvider?
- ListView cambiar el texto en el elemento de clic
Aquí hay un ListView que reacciona movimientos de cabeza de tp y un ScrollView .
Aquí hay un ejemplo de mi propia vista de lista desplazable de la cabeza. Es un ejemplo muy simple y crudo. Desde éste, creo que puede desarrollar su propia vista de lista de desplazamiento de cabeza personalizada como desee. Sólo tiene una lista con varios elementos y un administrador de sensores que recupera los ángulos de la cabeza. Basándome en el ángulo de cabeceo y con la ayuda de la fórmula de mapeo lineal (mapeado el intervalo de ángulo de cabecera con el intervalo representado por el número de ítems en el listview) podría fácilmente hacer una lista de desplazamiento de cabecera. Espero que ayude.
Diseño:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.headangles.MainActivity" > <ListView android:id="@+id/list" android:layout_height="wrap_content" android:layout_width="match_parent"> </ListView> </RelativeLayout>
Actividad:
public class MainActivity extends Activity implements SensorEventListener { private SensorManager mSensorManager; private Sensor mOrientation; ListView listView ; ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); mOrientation = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); mSensorManager.registerListener(this, mOrientation, SensorManager.SENSOR_DELAY_GAME); // Get ListView object from xml listView = (ListView) findViewById(R.id.list); // Defined Array values to show in ListView String[] values = new String[] { "Android List View", "Adapter implementation", "Simple List View In Android", "Create List View Android", "Android Example", "List View Source Code", "List View Array Adapter", "Android Example List View" }; adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, values); // Assign adapter to ListView listView.setAdapter(adapter); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) {} @Override public void onSensorChanged(SensorEvent event) { /* *** need only pitch angle (head bouncing backwards and forward)*** */ float pitch_angle = event.values[1]; /* *** first interval head angle degrees *** */ int top_head_angle_limit = -110; int bot_head_angle_limit = -70; /* *** second interval *** */ int top_list_item_limit = 0; int bot_list_item_limit = adapter.getCount(); /* *** linear mapping/ map interval [-110,-70](head angle degrees) -> [0, 8] list items *** */ /* *** linear mapping formula: (val - A)*(ba)/(BA) + a *** */ if(pitch_angle >= top_head_angle_limit && pitch_angle <= bot_head_angle_limit){ int selection = (int) ((pitch_angle - top_head_angle_limit)*(bot_list_item_limit - top_list_item_limit)/(bot_head_angle_limit - top_head_angle_limit) + top_list_item_limit); Log.e("selection: ", String.valueOf(selection)); listView.setSelection(selection); } }
}
- NullPointerException al llamar a findViewById () para obtener la vista de un fragmento
- Android cómo redimensionar el ancho y la altura del video en la vista de la superficie para reproductor multimedia