ViewPager 和 GridView

来源:互联网 发布:微信小程序分销源码 编辑:程序博客网 时间:2024/06/07 01:16

1.布局文件:

<RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"    android:layout_height="match_parent" tools:context="com.example.day_1019_lianxi.MainActivity">    <android.support.v4.view.ViewPager        android:id="@+id/vp"        android:layout_width="match_parent"        android:layout_height="300dp"></android.support.v4.view.ViewPager>    <LinearLayout        android:id="@+id/lin"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="horizontal"        android:layout_alignBottom="@+id/vp"        android:layout_marginBottom="20dp"        android:layout_centerHorizontal="true"        ></LinearLayout>    <GridView        android:layout_below="@+id/vp"        android:id="@+id/grid"        android:numColumns="2"        android:layout_width="match_parent"        android:layout_height="match_parent"></GridView></RelativeLayout>
2.Mainactivity:
public class MainActivity extends AppCompatActivity {    private GridView gridView;    private ViewPager vp;    private LinearLayout lin;    private List<ImageView> imgs;    Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            if (msg.what==0){                vp.setCurrentItem(vp.getCurrentItem()+1);                handler.sendEmptyMessageDelayed(0,3000);            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        gridView = (GridView) findViewById(R.id.grid);        lin = (LinearLayout) findViewById(R.id.lin);        vp = (ViewPager) findViewById(R.id.vp);        String path ="http://v3.wufazhuce.com:8000/api/reading/index/?version=3.5.0&platform=android";        getdata.getdatafromnet(MainActivity.this, path, new Callback() {            @Override            public void getsjson(String json) {                Gson gson = new Gson();                Bean bean = gson.fromJson(json, Bean.class);                List<Bean.DataBean.EssayBean> ls = bean.getData().getEssay();                gridView.setAdapter(new Gridadapter(MainActivity.this,ls));                vp.setAdapter(new ViewPageradapter(MainActivity.this,ls,handler));                vp.setOffscreenPageLimit(ls.size());                vp.setCurrentItem(ls.size()*1000);                handler.sendEmptyMessageDelayed(0,3000);                indic(ls);                vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {                    @Override                    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                    }                    @Override                    public void onPageSelected(int position) {                        for (int i=0;i<imgs.size();i++){                            if (i==position%imgs.size()){                                imgs.get(i).setImageResource(R.drawable.sha1);                            }else{                                imgs.get(i).setImageResource(R.drawable.sha2);                            }                        }                    }                    @Override                    public void onPageScrollStateChanged(int state) {                    }                });            }        });    }    private void indic(List<Bean.DataBean.EssayBean> ls) {        imgs = new ArrayList<>();        for (int i=0;i<ls.size();i++){            ImageView imageView = new ImageView(MainActivity.this);            if (i==0){                imageView.setImageResource(R.drawable.sha1);            }else{                imageView.setImageResource(R.drawable.sha2);            }            imgs.add(imageView);            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);            params.setMargins(5,0,5,0);            lin.addView(imageView,params);        }    }}
3.ViewPagerAdapter:
public class ViewPageradapter extends PagerAdapter {    Context tcx;    List<Bean.DataBean.EssayBean> ls;   Handler handler;    public ViewPageradapter(Context tcx,List<Bean.DataBean.EssayBean> ls,Handler handler) {        this.tcx = tcx;        this.ls = ls;        this.handler=handler;    }    @Override    public int getCount() {        return Integer.MAX_VALUE;    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view==object;    }    @Override    public Object instantiateItem(ViewGroup container, int position) {        ImageView imageView = new ImageView(tcx);        imageView.setScaleType(ImageView.ScaleType.FIT_XY);        ImageLoader.getInstance().displayImage(ls.get(position % ls.size()).getAuthor().get(0).getWeb_url(), imageView, Imageloaderutil.getDefultOption());        imageView.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                int action = event.getAction();                switch (action){                    case MotionEvent.ACTION_DOWN:                        handler.removeCallbacksAndMessages(null);                        break;                    case MotionEvent.ACTION_MOVE:                        handler.removeCallbacksAndMessages(null);                        break;                    case MotionEvent.ACTION_CANCEL:                        handler.removeCallbacksAndMessages(null);                        break;                    case MotionEvent.ACTION_UP:                        handler.sendEmptyMessageDelayed(0,3000);                        break;                }                return true;            }        });        container.addView(imageView);        return imageView;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        container.removeView((View) object);    }}
4.GridViewAdapter:
public class Gridadapter extends BaseAdapter {    Context tcx;    List<Bean.DataBean.EssayBean> ls;    public Gridadapter(Context tcx, List<Bean.DataBean.EssayBean> ls) {        this.tcx = tcx;        this.ls = ls;    }    @Override    public int getCount() {        return ls.size();    }    @Override    public Object getItem(int position) {        return ls.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolders vh;        if (convertView==null){            vh = new ViewHolders();            convertView= View.inflate(tcx, R.layout.grid,null);            vh.img= (ImageView) convertView.findViewById(R.id.img);            vh.txt= (TextView) convertView.findViewById(R.id.txt);            convertView.setTag(vh);        }else{            vh = (ViewHolders) convertView.getTag();        }        vh.txt.setText(ls.get(position).getAuthor().get(0).getDesc());        ImageLoader.getInstance().displayImage(ls.get(position).getAuthor().get(0).getWeb_url(),vh.img, Imageloaderutil.getDefultOption());        return convertView;    }    class  ViewHolders{        ImageView img;        TextView txt;    }}


原创粉丝点击