Desplácese entre vistas Android

Estoy codificando una aplicación que tiene una actividad que puede proporcionar al usuario final con datos en dos formatos una vista de gráfico de barras utilizando el api Teechart (disponible aquí: http://www.steema.com/teechart/mobile ) y un listview nativo en android Actualmente tengo algo de lógica

primero i Inicializa una boolean flag = true;

A continuación, utilizar esta lógica botón para cambiar entre las vistas.

 OnClickListener changeViewListener = new OnClickListener(){ public void onClick(View v){ if(!flag){ listLayout.setVisibility(View.GONE); chartView.setVisibility(View.VISIBLE); changeView.setText("List"); flag = true; }else{ listLayout.setVisibility(View.VISIBLE); chartView.setVisibility(View.GONE); changeView.setText("Graph"); flag = false; } } }; 

Este código funciona muy bien y no me da problemas, sólo estoy preguntando si esto se puede hacer una mejor manera, como el uso de una vista flipper? Y si es así, ¿cómo implemento el código de la aleta de vista para cambiar entre estas dos vistas?

¿O debo usar fragmentos para cada vista? Cualquier ayuda sería muy apreciada.

Tal vez esto podría ser de ayuda para usted: Animar entre las vistas

Da un ejemplo genérico, puede ser que se puede ajustar para obtener el efecto flip que desea.

Actualización: Ese tutorial también da enlaces a varios documentos de Animación. A partir de eso, creo que puede utilizar Rotate Animation para crear el efecto de voltear. Puede dar el ángulo de rotación y el pivote sobre el cual girar la vista.

El concepto es que gira una vista hacia fuera y gira en la otra vista.

Actualizar:

Ver Flipper es una implementación de animación entre vistas. El método anterior que publiqué fue genérico, se puede jugar con valores y crear animaciones con usted tener un control mucho más fino. Puede crear transiciones entre vistas que otros nunca hayan intentado.

Pasos para ver Flipper:

1. En View Flipper, define un elemento Flipper en el archivo XML de Layout. A este elemento flipper, agrega dos elementos secundarios, que podrían ser simplemente dos vistas O dos diseños o una vista y un diseño. La aleta de vista flips entre estas dos vistas que ha definido.

2. Una vez creado esto en XML, cree cuatro reglas de animación bajo /res/anim para los siguientes tipos de transiciones de entrada y salida:

a. Izquierda en

segundo. Excluido

do. Justo en

re. Hacia fuera

3. Después de 1 y 2, ahora agrega los oyentes Touch o Gesture en su código, para escuchar los eventos Touch y Listen. Dentro de estos oyentes, a continuación, iniciar la animación mediante vf.setInAnimation() o vf.setOutAnimation() , donde vf es la instancia de ViewFlipper.

Puedes encontrar el código completo aquí:

1. Ver Flipper Tutorial 1

2. Ver Flipper Tutorial 2

Actualización: Hay que hacer algunos ajustes para que View Flipper funcione con ListView. Encontré esta otra pregunta de SO donde se solucionó el mismo problema con una edición menor. Compruébelo aquí .

Si sólo tiene dos vistas que desea cambiar, este enfoque es lo suficientemente bueno. Sin embargo, puede utilizar un paginador de vista para implementar este enfoque Tal sería particularmente útil si tiene varias vistas de modo que no se hacen todos a la vez y perder la memoria. ViewPager administrará cuándo crear y destruir vistas.

  1. Definir en el diseño

     <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" /> 
  2. Crear un adaptador

     class MyPagerAdapter extends PagerAdapter { public int getCount() { return 2; } public Object instantiateItem(View collection, int position) { LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService( Context.LAYOUT_INFLATER_SERVICE); // Inflate the correct view based on position View view = inflater.inflate(R.layout.yourLayoutHere, null); // ... Setup the view ((ViewPager) collection).addView(view, 0); return view; } @Override public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView((View) arg2); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == ((View) arg1); } @Override public Parcelable saveState() { return null; } } 
  3. Establecer el adaptador

     ViewPager viewPager = findViewById(R.id.viewPager); viewPager.setAdapter(new MyPagerAdapter()); 

Ahora, al pulsar el botón, puede configurar el elemento actual del buscapersonas.

  viewPager.setCurrentItem(position); 
  • Cómo deslizar imágenes en ViewFlipper o ViewPager
  • El valor en edittext no se muestra hasta que se enfoque. Androide
  • La animación de Viewflipper no funciona en el primer golpe
  • FindViewById devuelve null en una vista <include>
  • Cómo cambiar entre actividades con viewflipper
  • Scrollview no desliza cuando es demasiado corto para desplazarse
  • Cómo cambiar el atributo 'android: autoStart' de ViewFlipper en RemoteViews mediante programación?
  • Android: ViewFlipper o ViewPager - ¿Cuál es la mejor opción?
  • Android Cómo llamar a OnFling cuando Swiping en cualquier lugar de la actividad no sólo en el ViewFlipper
  • Cómo inflar correctamente un diseño con un ViewFlipper anidado?
  • Android: el diseño de inflado toma mucho tiempo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.