继续整理笔记,不知道在这个公司还能带多久,也不知道新工作什么时候到来。有点衰...
这是一个类似iphone上一个弹簧效果,纵向的弹簧效果比较常见,一般是利用listview来实现。当策划提出这个左右弹簧效果的时候,让我费了好几天的时间来搜集和改代码。当然最后的结果不是很随人愿,但是效果还是出来了。
代码如下
首先在viewpager初始数据的时候,viewlist的首尾分别加上一个空白的view
private void findView()
{
viewList = new ArrayList<View>();
ImageView v1 = new ImageView(ViewPagerActivity.this);
v1.setBackgroundColor(Color.WHITE);
viewList.add(v1);
for (int i = 0; i < imageUrls.length; i++)
{
final ImageView iv = new ImageView(ViewPagerActivity.this);
iv.setOnClickListener(this);
iv.setScaleType(ScaleType.FIT_XY);
try
{
final URL url = new URL("http://" + PostHttp.connIp
+ "/IDOC/service/file/" + imageUrls[i][1] + "/"
+ System.currentTimeMillis() + ".jpeg");
final int index = i;
Bitmap mBitmap = imageloader.loadImageFromUrl(url.toString());
Bitmap newBitmap = ZoomBitmap(mBitmap,
WelcomeActivity.screenWidth, WelcomeActivity.ratio);
iv.setImageBitmap(newBitmap);
iv.setTag(index);
viewList.add(iv);
} catch (MalformedURLException e)
{
e.printStackTrace();
}
}
ImageView v2 = new ImageView(ViewPagerActivity.this);
v2.setBackgroundColor(Color.WHITE);
viewList.add(v2);
}
其次,这里才是重点:
为viewpager添加setOnPageChangeListener监听,重写onPageSelected方法。
@Override
public void onPageSelected(int arg0)
{
if(arg0 == 0){
pager.setCurrentItem(1);
}
if(arg0 == adapter.getCount()-1){
pager.setCurrentItem(adapter.getCount()-2);
}
}
经过以上两步,简单的左右弹簧效果就实现了。
欢迎大牛提出更“科学”的方法。
TIP:给自己的记录
iv.setTag(index);给每个图片添加一个tag,在对图片添加单击事件后,可以根据tag对图片进行辨别。