如何让GalleryView中的图片滚动完成后回到初始位置?
我将考虑一个简单的 GalleryView
,它由几个图像组成。我将从左向右滚动,反之亦然,然后离开。截至目前(如下面的 2 个图像所示),gallery
停止在视图中间,无论何时,都会从初始位置或最终位置留下一些空格(图像中标记为红色)滚动完成。我担心的是,我希望我的画廊在滚动后获取初始位置或最终位置(取决于滚动)。我该怎么做呢?
图片:
当从左到右滚动完成时:
当从右到左滚动完成时:
我的 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;
}
}
简单来说,我希望这些图库视图具有弹性效果。
I will consider a simple GalleryView
which consists of few images.I will scroll from left to right or vice versa and then leave. As of now (as shown in the 2 images below) the gallery
stops in the middle of the view, leaving some spaces (marked red colour in the image) from the initial position or from the final position whenever the scrolling is complete. My concern is, I want my gallery
to acquire the initial position or final position (scroll dependent) after scrolling. How would I do that?
Images:
When left to right scrolling is completed:
When right to left scrolling is completed:
My 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;
}
}
To be simple, I want the elastic effect to these gallery views.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我只知道如何删除左侧的空间,并且图像将从左侧开始。
描述有关显示器的一般信息的结构,例如其大小、密度和字体缩放。要访问 DisplayMetrics 成员,请像这样初始化一个对象
I know only how to remove space from left side and image will start from left.
A structure describing general information about a display, such as its size, density, and font scaling.To access the DisplayMetrics members, initialize an object like this