Je suis un débutant au développement android.Maintenant, je voudrais faire une vue de la galerie aussi circulaire que l'image comme ci-dessous.Les choses sont que je veux agrandir l'image centrale lorsque l'utilisateur défile de gauche à droite et de droite à gauche. Y a-t-il des tutoriels pour ça? Ce que je veux, c'est que l'image qui a été glissée doit être agrandie lorsqu'elle est au centre. Je pensais pouvoir le faire avec Gallery. mais l'exemple du développeur Android n'est pas celui que je veux. :(galerie circulaire android?
Répondre
Si vous voulez agrandir le centre d'image il y a une façon possible sélectionnée Sur votre méthode onItemSelected, il suffit d'appeler une animation pour agrandir l'objet La propriété de la galerie est qu'il est toujours verrouillé au centre. Ainsi, l'élément central sera toujours sélectionné. espoir qui fonctionnera ..
<?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>
Rappelez-vous que vous devrez sto En ce qui concerne la vue précédente, lorsque l'élément s'éloigne du centre, il doit être mis à la taille normale.
Vous pouvez donc avoir deux vues: prevView et currView.
Faites l'animation sur le currView.
Merci,
Sen
essayer 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;
}
}}
J'ai créé mon propre tutoriel pour cela: http://evgeni-shafran.blogspot.com/2011/08/tutorial-custom-gallery-circular-and.html
Pour qu'il soit circulaire que vous devez faire penser qu'il a beaucoup d'éléments, beaucoup plus de tu as vraiment. Et puis en faisant position = position% items.length vous créez quelque chose comme (je vais le montrer pour 3 items): 1,2,3,1,2,3,1,2,3,1,2 , 3,1,2,3,1,2,3,1,2,3 Et puis allez au milieu, même si le rouleau beaucoup, il ne se rapproche pas de la fin. 1,2,3,1,2,3,1,2,3, -> < -, 2,3,1,2,3,1,2,3,1,2,3
Pour qu'il soit sélectionné: vous devez remplacer setOnItemSelectedListener et manipuler la taille. n'oubliez pas d'enregistrer une référence à votre dernière vue, donc quand vous arrivez à la prochaine, vous pouvez le faire paraître régulier, pas agrandi.
I mis en œuvre tous les deux dans mon tutoriel ci-dessus
Salut pengwang, je l'ai déjà essayé vos codes et ça ne change rien. des idées ? – geekmyo
Le code de pengwang * simule * la boucle infinie en étendant la plage –
+1 Merci pour la solution .. !! –