<!-- 滑动图片布局文件 -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/vpSlideImg"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/llSlideImg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="30dp"
android:gravity="center_horizontal"
android:orientation="horizontal" >
</LinearLayout>
</RelativeLayout>
</FrameLayout>
/**
* Copyright(C) 2014 Beijing Oradt Ltd.
* For Digital Visiting Card 1.0 File
* Name:SlideImageActivity.java
* Description:左右滑动图片
* Author: Xiao JinLai
* Date:2014-12-18上午11:46:56
* History: Date: Author: Depiction:
*/
public class SlideImageActivity extends Activity implements
OnPageChangeListener {
/**
* ViewPager
*/
private ViewPager mViewPager;
/**
* 装点点的ImageView数组
*/
private ImageView[] mTips;
/**
* 装ImageView数组
*/
private ImageView[] mImageViews;
/**
* 图片资源id
*/
private int[] mImgIdArray;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initControl(); // 加载控件
}
/**
* 加载控件
*/
private void initControl() {
setContentView(R.layout.activity_slide_img);
ViewGroup tViewGroup = (ViewGroup) findViewById(R.id.llSlideImg);
mViewPager = (ViewPager) findViewById(R.id.vpSlideImg);
// 载入图片资源ID
mImgIdArray = new int[] { R.drawable.item01, R.drawable.item02,
R.drawable.item03, R.drawable.item04, R.drawable.item05,
R.drawable.item06, R.drawable.item07, R.drawable.item08 };
// 将点点加入到ViewGroup中
mTips = new ImageView[mImgIdArray.length];
for (int i = 0; i < mTips.length; i++) {
ImageView imageView = new ImageView(this);
imageView.setLayoutParams(new LayoutParams(10, 10));
mTips[i] = imageView;
if (i == 0) {
mTips[i].setBackgroundResource(R.drawable.page_indicator_focused);
} else {
mTips[i].setBackgroundResource(R.drawable.page_indicator_unfocused);
}
tViewGroup.addView(imageView);
}
// 将图片装载到数组中
mImageViews = new ImageView[mImgIdArray.length];
for (int i = 0; i < mImageViews.length; i++) {
ImageView imageView = new ImageView(this);
mImageViews[i] = imageView;
imageView.setBackgroundResource(mImgIdArray[i]);
}
// 设置Adapter
mViewPager.setAdapter(new SlideImgAdapter(mImageViews));
// 设置监听,主要是设置点点的背景
mViewPager.setOnPageChangeListener(this);
// 设置ViewPager的默认项, 设置为长度的100倍,这样子开始就能往左滑动
// mViewPager.setCurrentItem((mImageViews.length) * 100);
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int arg0) {
setImageBackground(arg0);
}
/**
* 设置选中的tip的背景
*
* @param selectItems
*/
private void setImageBackground(int selectItems) {
for (int i = 0; i < mTips.length; i++) {
if (i == selectItems) {
mTips[i].setBackgroundResource(R.drawable.page_indicator_focused);
} else {
mTips[i].setBackgroundResource(R.drawable.page_indicator_unfocused);
}
}
}
}
/**
* Copyright(C) 2014 Beijing Oradt Ltd.
* For Digital Visiting Card 1.0 File
* Name:SlideImgAdapter.java
* Description:滑动图片适配器
* Author: Xiao JinLai
* Date:2014-12-19上午10:57:51
* History: Date: Author: Depiction:
*/
public class SlideImgAdapter extends PagerAdapter {
private ImageView[] mImageViews;
public SlideImgAdapter(ImageView[] imageViews) {
this.mImageViews = imageViews;
}
/**
* 返回可用的视图的总数
*/
@Override
public int getCount() {
return mImageViews.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
/**
* PagerAdapter只缓存三张要显示的图片,如果滑动的图片超出了缓存的范围,就会调用这个方法,将图片销毁 View:是
* instantiateItem 中已添加的 view position:0 object:是 ViewGroup view
* 子View的第 0 个元素。
*/
@Override
public void destroyItem(ViewGroup view, int position, Object object) {
view.removeView(mImageViews[position]);
}
/**
* 当要显示的图片可以进行缓存的时候,会调用这个方法进行显示图片的初始化, 我们将要显示的 ImageView 加入到 ViewGroup
* 中,然后作为返回值返回即可
*/
@Override
public Object instantiateItem(ViewGroup view, int position) {
view.addView(mImageViews[position]);
return mImageViews[position];
}
}
接着看看,程序运行后在 SlideImgAdapter 中运行的状态。
先走 getCount
然后 instantiateItem(ViewGroup view, int position)
在 view 中添加了两个View后,又回到 getCount
接着 isViewFromObject(View view, Object object)
我看到的 view 与 object 的 Id 一样,说明是一个对象。并同为 ImageView ,返回值是 true
还是走 isViewFromObject(View view, Object object)
这时我看到的 view 与 object 的 Id 不一样了,说明不是一个对象,但同为 ImageView ,返回值是 false
还是走 isViewFromObject(View view, Object object)
我看到的 view 与 object 的 Id 一样:830016405576,说明是一个对象。并同为 ImageView ,返回值是 true
还是走 isViewFromObject(View view, Object object)
我看到的 view 与 object 的 Id 一样:830018479360,说明是一个对象。并同为 ImageView ,返回值是 true
还是走 isViewFromObject(View view, Object object)
这时我看到的 view 与 object 的 Id 不一样了,
view(Id):830016405576
object(Id):830018479360
说明不是一个对象,但同为 ImageView ,返回值是 false
还是走 isViewFromObject(View view, Object object)
我看到的 view 与 object 的 Id 一样:830016405576,说明是一个对象。并同为 ImageView ,返回值是 true
还是走 isViewFromObject(View view, Object object)
我看到的 view 与 object 的 Id 一样:830018479360,说明是一个对象。并同为 ImageView ,返回值是 true
还是走 isViewFromObject(View view, Object object)
这时我看到的 view 与 object 的 Id 不一样了,
view(Id):830016405576
object(Id):830018479360
说明不是一个对象,但同为 ImageView ,返回值是 false
还是走 isViewFromObject(View view, Object object)
我看到的 view 与 object 的 Id 一样:830016405576,说明是一个对象。并同为 ImageView ,返回值是 true
左滑动图片,