2010-09-03 13 views
5

Soy un novato en el desarrollo de Android. Ahora me gustaría hacer una vista de galería como una imagen circular como la siguiente. Las cosas son que quiero agrandar la imagen central cuando el usuario se desplaza de izquierda a derecha y de derecha a izquierda. ¿Hay algún tutorial para eso?android circular gallery?

enter image description here Lo que quiero es que la imagen que se ha eliminado debe ser ampliada mientras está en el centro. Pensé que podría hacerlo con Gallery. pero el ejemplo del desarrollador de Android no es el que yo quiero. :(

Respuesta

5


Si desea ampliar la imagen seleccionada centro hay una forma posible En su método onItemSelected, simplemente llame a una animación para enfocar el objeto La propiedad de la galería es que siempre es de centro-bloqueo. de modo que el elemento central será siempre seleccionado. la esperanza de que va a funcionar ..

<?xml version="1.0" encoding="utf-8"?> 
<set 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false" 
    android:fillAfter="true" 
> 
<scale 
     android:fromXScale="1.0" 
     android:toXScale="1.50" 
     android:fromYScale="1.0" 
     android:toYScale="1.50" 
     android:duration="600" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:fillAfter="true"/> 

</set> 

recuerde que usted tendrá que sto En la vista anterior, como cuando el elemento se aleja del centro, debe ponerse al tamaño normal.

Para que pueda tener dos vistas: prevView y currView.
Haga la animación en el currView.

Gracias,
Sen

12

intento youcan:..

public class TestGallery extends Activity { 
/** Called when the activity is first created. */ 
private Integer[] mImageIds = { R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4 }; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Gallery g = (Gallery) findViewById(R.id.gallery); 
    g.setAdapter(new ImageAdapter(this)); 

    g.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView parent, View v, int position, long id) { 
      if (position >= mImageIds.length) { 
       position = position % mImageIds.length; 
      } 
      Toast.makeText(TestGallery.this, "" + position, Toast.LENGTH_SHORT).show(); 
     } 
    }); 

} 

public class ImageAdapter extends BaseAdapter { 
    int mGalleryItemBackground; 
    private Context mContext; 

    public ImageAdapter(Context c) { 
     mContext = c; 
     TypedArray a = obtainStyledAttributes(R.styleable.Gallery1); 
     mGalleryItemBackground = a.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 0); 

     a.recycle(); 
    } 

    public int getCount() { 
     return Integer.MAX_VALUE; 
    } 

    public Object getItem(int position) { 
     if (position >= mImageIds.length) { 
      position = position % mImageIds.length; 
     } 
     return position; 
    } 

    public long getItemId(int position) { 
     if (position >= mImageIds.length) { 
      position = position % mImageIds.length; 
     } 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView i = new ImageView(mContext); 
     if (position >= mImageIds.length) { 
      position = position % mImageIds.length; 
     } 
     i.setImageResource(mImageIds[position]); 
     i.setLayoutParams(new Gallery.LayoutParams(80, 80)); 
     i.setScaleType(ImageView.ScaleType.FIT_XY); 
     i.setBackgroundResource(mGalleryItemBackground); 
     return i; 
    } 

    public int checkPosition(int position) { 
     if (position >= mImageIds.length) { 
      position = position % mImageIds.length; 
     } 
     return position; 
    } 
}} 
+0

Hola Pengwang, yo ya probé sus códigos y eso no cambia nada. algunas ideas ? – geekmyo

+0

código de pengwang * simula * bucle infinito ampliando el rango –

+0

+1 Gracias por la solución .. !! –

1

He creado mi propio tutorial para esto: http://evgeni-shafran.blogspot.com/2011/08/tutorial-custom-gallery-circular-and.html

Para que sea circular, lo que necesita para que sea pensar que tienen una gran cantidad de elementos, mucho más de lo tu realmente tienes

Y luego haciendo position = position% items.length crea algo así como (lo mostraré para 3 elementos): 1,2,3,1,2,3,1,2,3,1,2 , 3,1,2,3,1,2,3,1,2,3 Y luego ir al centro, así que incluso si el desplazamiento mucho, no llegará hasta el final. 1,2,3,1,2,3,1,2,3, -> < -, 2,3,1,2,3,1,2,3,1,2,3

Para que se seleccione: debe anular setOnItemSelectedListener y manipular el tamaño. no olvides guardar una referencia a tu última vista, así que cuando pases a la siguiente puedes hacer que parezca normal, no ampliada.

he implementado tanto de esto en mi tutorial enumerados anteriormente