2010-09-03 9 views
5

Ich bin ein Neuling für Android-Entwicklung.Jetzt möchte ich Galerieansicht als kreisförmige wie Bild wie unten.Die Dinge sind, dass ich das Bild in der Mitte vergrößern möchten, wenn Benutzer von links nach rechts und von rechts nach links scrollen. Gibt es irgendwelche Tutorials dafür?Android kreisförmige Galerie?

enter image description here was ich will ist, dass das Bild, das kopiert wurde, vergrößert werden muss, während es in der Mitte ist. Ich dachte, ich könnte es mit Gallery machen. aber das beispiel vom android-entwickler ist nicht das, was ich will. :(

Antwort

5


Wenn Sie das Zentrum ausgewählte Bild dort vergrößern wollen, ist ein möglicher Weg, Auf Ihrer onItemSelected Methode, nur eine Animation nennt das Objekt vergrößern Die Immobilie der Galerie ist, dass es immer mitten gesperrt ist. So wird das zentrale Element immer ausgewählt werden. Hoffnung, die funktioniert ..

<?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> 

Sie daran denken, dass Sie zu sto haben Wenn Sie das Element von der Mitte weg bewegen, sollte es auf die normale Größe eingestellt werden.

So können Sie zwei Ansichten haben - prevView und currView.
Führen Sie die Animation auf der currView aus.

Danke,
Sen

12

YouCan Versuch:..

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

Hallo, ich Ihre Codes bereits versucht, und es ändert nichts. irgendwelche Ideen ? – geekmyo

+0

Pengwangs Code * simuliert * Endlosschleife durch Erweiterung des Bereichs –

+0

+1 Danke für die Lösung .. !! –

1

habe ich mein eigenes Tutorial dafür: http://evgeni-shafran.blogspot.com/2011/08/tutorial-custom-gallery-circular-and.html

Denn es kreisförmig Sie denken, es machen müssen, um sein, dass es eine Menge Einzelteile haben, viel mehr dann hast du wirklich.

Und dann, indem Sie Position = Position% items.length Sie erstellen etwas wie (ich werde es für 3 Elemente zeigen): 1,2,3,1,2,3,1,2,3,1,2 , 3,1,2,3,1,2,3,1,2,3 Und dann in die Mitte gehen, auch wenn die Schriftrolle viel wird er nicht zu Ende kommen. 1,2,3,1,2,3,1,2,3, -> < -, 2,3,1,2,3,1,2,3,1,2,3

Damit es ausgewählt werden kann: Sie müssen setOnItemSelectedListener überschreiben und die Größe ändern. Vergessen Sie nicht, eine Referenz zu Ihrer letzten Ansicht zu speichern. Wenn Sie zur nächsten Ansicht gelangen, können Sie sie als normal und nicht vergrößert betrachten.

ich beide in meinem Tutorial implementiert pengwang oben aufgeführten