功能:滑动图片
效果图示例:
1、在res/drawable导入需要的图片
2、res/layout界面 activity_main.xml 布局
代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<TextView
android:id="@+id/pageNo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""
android:background="#000"
android:textColor="#fff"
android:textSize="30sp"/>
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/pageNo" />
</RelativeLayout>
======================
3、MainActivity 类
代码
//要实现接口OnPagerChangeListener
public class MainActivity extends Activity implements OnPageChangeListener{
private TextView text_pageNo;
private ViewPager viewpager;
private MyAdapter adapter;
private List<View> list = new ArrayList<View>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.text_pageNo = (TextView) this.findViewById(R.id.pageNo);
this.viewpager = (ViewPager) this.findViewById(R.id.viewPager);
//数据初始化 -- 用array方法
TypedArray array = getResources().obtainTypedArray(R.array.imgarray);
for(int i = 0;i<array.length();i++){
ImageView imageView = new ImageView(this);
imageView.setImageDrawable(array.getDrawable(i));
list.add(imageView);
}
adapter = new MyAdapter(list);
viewpager.setAdapter(adapter);
text_pageNo.setText(1 + "/" + array.length());
viewpager.setOnPageChangeListener(this);
}
//继承PagerAdapter类的适配器
class MyAdapter extends PagerAdapter{
//图片数据
private int[] imgs = {R.drawable.car0,R.drawable.car1,
R.drawable.car2,R.drawable.car3,
R.drawable.car4,R.drawable.car5,
R.drawable.car6,R.drawable.car7,};
private List<View> list;
public MyAdapter(List<View> list) {
this.list = list;
}
@Override//数据大小
public int getCount() {
return this.list.size();
}
@Override//判断视图是否是对象
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override//实例化视图 -- 把某一个view放到当前的ViewPager位置中
public Object instantiateItem(ViewGroup container, int position) {
//方法1
/*ImageView imageView = new ImageView(container.getContext());
//把当前图片设置到动态创建的ImageView布局控件上
imageView.setImageResource(imgs[position]);
//设置图片数据到container
container.addView(imageView);*/
//方法2
container.addView(this.list.get(position));
return this.list.get(position);
}
@Override//销毁滑出去的view 滑出去的view和当前的位置相差1(内部有缓存功能)
public void destroyItem(ViewGroup container, int position, Object object) {
//super.destroyItem(container, position, object);
//方法2一定要销毁缓存的视图 不然往回滑动会蹦
container.removeView(this.list.get(position));
}
}
//------------实现接口OnPageChangeListener监听要重写的方法-----------
@Override//滚动时状态的改变
public void onPageScrollStateChanged(int state) {
switch(state){
case ViewPager.SCROLL_STATE_DRAGGING://拖动状态
break;
case ViewPager.SCROLL_STATE_IDLE://停止状态
break;
case ViewPager.SCROLL_STATE_SETTLING://停止滚动状态
break;
}
}
@Override//拖动时
public void onPageScrolled(int position, float arg1, int arg2) {
}
@Override//选中时
public void onPageSelected(int position) {
text_pageNo.setText((position + 1) + "/" + adapter.getCount());
}
}