OnPageChangeListener的简单运用
来源:互联网 发布:海量数据是什么 编辑:程序博客网 时间:2024/06/05 10:26
参考自博客:http://www.cnblogs.com/xinye/archive/2013/06/09/3128209.html
目的:
进一步简单熟悉OnPageChangeListener, ViewPager浏览图片时候切换页面的时候有个缩放效果。
这里主要用了setPadding(...) 同理可以增加setAlpha(...)透明度改变的效果。
代码一: activity_main.xml
<LinearLayout 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}" > <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/viewPager" /></LinearLayout>
代码二: MainActivity.java
public class MainActivity extends Activity { private ViewPager mViewPager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mViewPager=(ViewPager)findViewById(R.id.viewPager);Integer[] drawableArray=new Integer[]{R.drawable.dongzhi,R.drawable.hanlu,R.drawable.liqiu,R.drawable.xiaohan};ArrayList<ImageView> list=new ArrayList<ImageView>();for(int i=0;i<drawableArray.length;i++){ImageView imgView=new ImageView(this);imgView.setImageResource(drawableArray[i]);list.add(imgView);}mViewPager.setAdapter(new mViewPagerAdapter(list));mPageChangeListener listener=new mPageChangeListener(mViewPager,list);mViewPager.setOnPageChangeListener(listener);} // Part2-->>Adapter适配器class mViewPagerAdapter extends PagerAdapter{private ArrayList<ImageView> viewList;public mViewPagerAdapter(ArrayList<ImageView> viewList){this.viewList=viewList;}@Overridepublic int getCount() {return viewList.size();}@Overridepublic boolean isViewFromObject(View view, Object obj) {return view==obj;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeViewInLayout((View) object);}@Overridepublic Object instantiateItem(ViewGroup container, int position) {ImageView imgView=viewList.get(position);container.addView(imgView);return imgView;}} //Part3 - ->>OnPageChangeListener监听类 class mPageChangeListener implements OnPageChangeListener{ int currentPageNo=0; int offset=0; int downX=0; private ArrayList<ImageView> viewList; private ViewPager viewPager; public mPageChangeListener(ViewPager viewPager,ArrayList<ImageView>list){ this.viewPager=viewPager; this.viewList=list; this.viewPager.setOnTouchListener(new OnTouchListener(){@Override //本来想根据OnTouchListener对第0页和最后一页做处理的,结果。。。没弄出来,这里没有用到这个监听类public boolean onTouch(View v, MotionEvent event) { switch(event.getAction()){ case MotionEvent.ACTION_DOWN: downX=(int) event.getX(); break; case MotionEvent.ACTION_MOVE: offset=(int)(event.getX()-downX); break; case MotionEvent.ACTION_UP: offset=0; downX=0; break; }return false;//false则go on,true则不会继续响应ViewPager本身的触摸事件机制;} }); }@Overridepublic void onPageScrollStateChanged(int state) {if(state==ViewPager.SCROLL_STATE_IDLE){for(int i=0;i<viewList.size()-1;i++){ viewList.get(i).setPadding(0, 0, 0, 0);}}Log.v("zz","zz-->>State="+state);}@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {Log.v("zz","zz-->>position="+position+"--Offset="+positionOffset+"--offsetPixels="+positionOffsetPixels); int paddingNum=50; int paddingNext=(int)(paddingNum*(1-positionOffset)); int paddingCurr=(int)(paddingNum*positionOffset); if(position!=viewList.size()-1){ viewList.get(position).setPadding(paddingCurr, paddingCurr, paddingCurr, paddingCurr); viewList.get(position+1).setPadding(paddingNext, paddingNext, paddingNext, paddingNext); //第N页滑向第N+1页 position=N;第N+1页滑向第N页,position=N; }}@Overridepublic void onPageSelected(int position) {} }}
0 0
- OnPageChangeListener的简单运用
- ViewPager的onPageChangeListener总结
- ViewPager.OnPageChangeListener的使用
- OnPageChangeListener
- onpagechangelistener
- ERwin的简单运用
- Log4j的简单运用
- ERwin的简单运用
- 克隆的简单运用
- URL的简单运用
- Log4j的简单运用
- XML的简单运用
- Log4j的简单运用
- Lock的简单运用
- 简单的运用CChartCtrl
- 二进制的简单运用
- HttpServer的简单运用
- 简单的AsyncTask运用
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- JAVA内存组成
- 【mysql】insert ... on duplicate key update column=IF(条件,值1,值2 ) 简直神一样的操作
- linux下navicat安装
- c# 线程间操作无效: 从不是创建控件“textBox1”的线程访问它。解决方法
- OnPageChangeListener的简单运用
- Display Command Line Arguments (C# Programming Guide)
- handler obtainMessage
- 九度题目1139:最大子矩阵
- 用RD,GR,BL三个方法内代码生成一张图片(非原创,加工品)
- php curl_init函数用法
- windows——VLC搭建RTSP服务器的过程
- Android卸载程序之后跳转到指定的反馈页面
- 常见的视频制式及其区别