Ich werde eine einfache GalleryView
Ich werde von links nach rechts oder umgekehrt blättern und dann gehen. Ab jetzt (wie in den 2 Bildern unten gezeigt) ist die gallery
hält in der Mitte der Ansicht an und hinterlässt einige Lücken (im Bild rot markiert) ab der Anfangs- oder Endposition, wenn der Bildlauf abgeschlossen ist. Mein Anliegen ist, ich möchte meine gallery
um die Anfangsposition oder die Endposition (abhängig vom Bildlauf) nach dem Bildlauf zu erfassen. Wie würde ich das tun?
Bilder:
Wenn der Bildlauf von links nach rechts abgeschlossen ist:
Wenn der Bildlauf von rechts nach links abgeschlossen ist:
Meine GalleryView
:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mAudio =(Button)findViewById(R.id.button1);
mVideo =(Button)findViewById(R.id.button2);
mImages=(Button)findViewById(R.id.button3);
mAudio.setOnClickListener(this);
mVideo.setOnClickListener(this);
mImages.setOnClickListener(this);
Gallery ga = (Gallery) findViewById(R.id.Gallery01);
galleryAdapter = new ImageAdapter(this);
galleryAdapter.setResourseArray(image_pics);
ga.setAdapter(galleryAdapter);
imageView = (ImageView) findViewById(R.id.ImageView01);
ga.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) {
Toast.makeText(getBaseContext(), "You have selected picture " + (pos + 1) + " of Gallery", Toast.LENGTH_SHORT)
.show();
if(activeGallery==AUDIO){
imageView.setImageResource(audio_pics[pos]);
}else if(activeGallery==VIDEO){
imageView.setImageResource(video_pics[pos]);
}else if(activeGallery==IMAGE){
imageView.setImageResource(image_pics[pos]);
}
}
});
}
@Override
public void onClick(View view) {
if (view == mAudio) {
if (galleryAdapter != null) {
galleryAdapter.setResourseArray(audio_pics);
galleryAdapter.notifyDataSetChanged();
activeGallery=AUDIO;
}
} else if (view == mVideo) {
if (galleryAdapter != null) {
activeGallery=VIDEO;
galleryAdapter.setResourseArray(video_pics);
galleryAdapter.notifyDataSetChanged();
}
} else if (view == mImages) {
if (galleryAdapter != null) {
activeGallery=IMAGE;
galleryAdapter.setResourseArray(image_pics);
galleryAdapter.notifyDataSetChanged();
}
}
}
public class ImageAdapter extends BaseAdapter {
private Context ctx;
int imageBackground;
private int[] resourseArray = null;
public ImageAdapter(Context c) {
ctx = c;
TypedArray ta = obtainStyledAttributes(R.styleable.Gallery1);
imageBackground = ta.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 1);
ta.recycle();
}
@Override
public int getCount() {
return resourseArray.length;
}
public int[] getResourseArray() {
return resourseArray;
}
public void setResourseArray(int[] resourseArray) {
this.resourseArray = resourseArray;
}
@Override
public Object getItem(int arg0) {
return arg0;
}
@Override
public long getItemId(int arg0) {
return arg0;
}
@Override
public View getView(int position, View arg1, ViewGroup arg2) {
ImageView iv = new ImageView(ctx);
iv.setImageResource(resourseArray[position]);
iv.setScaleType(ImageView.ScaleType.FIT_XY);
iv.setLayoutParams(new Gallery.LayoutParams(150, 120));
iv.setBackgroundResource(imageBackground);
return iv;
}
}
Ganz einfach: Ich möchte, dass diese Galerieansichten einen elastischen Effekt haben.