跳转+gridview+viewpager

来源:互联网 发布:adobe creative软件 编辑:程序博客网 时间:2024/06/01 07:44
public class MainActivity extends AppCompatActivity {    private TextView item;    int total=3;    private Timer timer;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        item=(TextView)findViewById(R.id.itme);        timer = new Timer();        //使用timer进行计时        timer.schedule(new TimerTask() {            @Override            public void run() {                total--;                //判断是否计时完成                if(total==0){                    gettomain();                    handler.sendEmptyMessage(1);  //                }else{                    handler.sendEmptyMessage(2);                }            }        }, 0, 1000);    }    Handler handler=new Handler(){        public void handleMessage(Message msg) {            //倒计时完成            if(msg.what==0){                gettomain();                timer.cancel();                total=3;                item.setEnabled(true);            }else{                item.setEnabled(false);                item.setText(total+"");  //9 8 7 6   0            }        };    };    public void gettomain(){        Intent in=new Intent(MainActivity.this,Main2Activity.class);        startActivity(in);    }}++++++++++++++++++++++++++++++++++++++++++++++++++++ 
public class Main2Activity extends AppCompatActivity {    private DrawerLayout dl;    private RelativeLayout rl;    private List<DataDataBean.NewslistBean> list = new ArrayList<>();    private MyAdapter myAdapter;    private int page_num=1;    private RadioGroup radioGroup;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main2);        radioGroup = (RadioGroup) findViewById(R.id.radio_group);        dl = (DrawerLayout) findViewById(R.id.drawer_layout);        //主内容区域的布局        //抽屉布局        rl = (RelativeLayout) findViewById(R.id.drawer_relative);        ImageView imageView=(ImageView)findViewById(R.id.image_touxiang) ;        TextView textView=(TextView)findViewById(R.id.qq);        textView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {            }        });        imageView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                dl.closeDrawer(rl);                Toast.makeText(Main2Activity.this,"QQ登录成功",Toast.LENGTH_SHORT).show();            }        });        //设置点击事件        //抽屉的监听事件        dl.setDrawerListener(new DrawerLayout.DrawerListener() {            /**             *             * @param drawerView             * @param slideOffset 表示的抽屉拖出来的宽度,,像素值             */            @Override            public void onDrawerSlide(View drawerView, float slideOffset) {            }            /**             * 抽屉打开了             * @param drawerView             */            @Override            public void onDrawerOpened(View drawerView) {            }            /**             * 抽屉关闭             * @param drawerView             */            @Override            public void onDrawerClosed(View drawerView) {            }            /**             * 抽屉的状态改变             *             * idle -- 表示与导航视图没有交互,静止             dragging -- 表示目前有与导航视图的交互,拖拽的状态             settling -- 表示有与导航视图的交互,并且导航视图正在关闭或打开             * @param newState             */            @Override            public void onDrawerStateChanged(int newState) {                Log.i("zhaungtai---",newState+"---");            }        });        //默认显示        getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout,new Fragmenthome()).commit();        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup radioGroup, int i) {                switch (i){                    case R.id.rb1:                        getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout,new Fragmenthome()).commit();                        break;                    case R.id.rb2:                        getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout,new Fragmentxiaoxi()).commit();                        break;                    case R.id.rb3:                        getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout,new Fragmentxiazai()).commit();                        break;                    case R.id.rb4:                        getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout,new Fragmentuser()).commit();                        break;                    default:                        break;                }            }        });    }}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
public class MyGridView extends GridView {    public MyGridView(Context context) {        super(context);    }    public MyGridView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    /**     * 重新计算高度     * @param widthMeasureSpec     * @param heightMeasureSpec     */    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);        super.onMeasure(widthMeasureSpec, expandSpec);    }   /* @Override    protected void onLayout(boolean changed, int l, int t, int r, int b) {        super.onLayout(changed, l, t, r, b);    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);    }*/}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
public class Fragmentxiaoxi extends Fragment {    private PullToRefreshGridView refreshGridView;    private int page_num = 1;    private List<DataDataBean2.NewslistBean> list = new ArrayList<>();//记录当前展示的所有数据    private ILoadingLayout startLabels;    private GridViewAdapter gridViewAdapter;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.xiaoxi,container,false);        refreshGridView = view.findViewById(R.id.refresh_grid_view);        return view;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        //1.默认的获取第一页的数据,然后设置适配器        getDataFromNet();        //2.设置可以刷新的模式        refreshGridView.setMode(PullToRefreshBase.Mode.BOTH);        //3.设置刷新的时候展示的文字(状态)        startLabels = refreshGridView.getLoadingLayoutProxy(true, false);        startLabels.setPullLabel("下拉刷新");        startLabels.setRefreshingLabel("正在刷新...");        startLabels.setReleaseLabel("放开刷新");        ILoadingLayout endLabels = refreshGridView.getLoadingLayoutProxy(false, true);        endLabels.setPullLabel("上拉刷新");        endLabels.setRefreshingLabel("正在载入...");        endLabels.setReleaseLabel("放开刷新...");        //4.设置下拉和上拉刷新的监听事件        refreshGridView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<GridView>() {            @Override            public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) {                //下拉刷新....请求第一页的数据,清空之前的数据,然后再添加设置适配器                getRefreshData();            }            @Override            public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) {                //上拉刷新/加载...加载的时候页数++                page_num++;                getDataFromNet();            }        });    }    /**     * 下拉刷新获取数据     */    private void getRefreshData() {        NetDataUtil.getData("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10", getActivity(), new JsonCallBack() {            @Override            public void getJsonString(String json) {                //解析                Gson gson = new Gson();                DataDataBean2 dataDataBean = gson.fromJson(json, DataDataBean2.class);                //先清空一下数据                list.clear();                //添加到集合的最前边,,,,(0,,,,)                list.addAll(0,dataDataBean.getNewslist());                //设置适配器                setAdapter();                //设置适配器之后停止刷新的操作                refreshGridView.onRefreshComplete();                //可以设置刷新的时间....                startLabels.setLastUpdatedLabel("上次更新时间:"+new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis())));//last最近的,最后一次update修改/更新            }        });    }    /**     * 刚开始进入页面获取网络数据....还可以作为上拉加载获取数据的操作     *     *     */    private void getDataFromNet() {        //第一个参数是接口,第二个上下文,第三个回调json数据        NetDataUtil.getData("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10"+page_num, getActivity(), new JsonCallBack() {            @Override            public void getJsonString(String json) {                //解析                Gson gson = new Gson();                DataDataBean2 dataDataBean = gson.fromJson(json, DataDataBean2.class);                //往后面添加...                list.addAll(dataDataBean.getNewslist());                //设置适配器                setAdapter();                //停止刷新                refreshGridView.onRefreshComplete();            }        });    }    /**     * 设置适配器的方法     */    private void setAdapter() {        if (gridViewAdapter == null){            gridViewAdapter = new GridViewAdapter(getActivity(),list);            refreshGridView.setAdapter(gridViewAdapter);        }else {            gridViewAdapter.notifyDataSetChanged();        }    }}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
public class Fragmentxiazai extends Fragment {    private PullToRefreshScrollView refreshScrollView;    private ViewPager viewPager;    private GridView gridView;    private List<DataDataBean.NewslistBean> list = new ArrayList<>();//记录当前展示的所有数据    private int page_num = 1;    private MyAdapter listViewAdapter;    private ILoadingLayout startLabels;    private List<String> imageUrlList;    private Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            if (msg.what == 0){                //显示下一页....拿到当前页+1                viewPager.setCurrentItem(viewPager.getCurrentItem() +1);                //再次发送消息                handler.sendEmptyMessageDelayed(0,2000);            }        }    };    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.xiazai, container, false);        refreshScrollView = view.findViewById(R.id.refresh2_scroll_view);        viewPager = view.findViewById(R.id.image_view_pager);        gridView = view.findViewById(R.id.scroll_list_gview);        return view;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        //失去焦点        gridView.setFocusable(false);        //轮播图        lunBoTu();        //listView展示数据        //1.获取网络数据,,,展示在listView上        getDataFromNet();        //2.设置刷新模式        /*设置pullToRefreshListView的刷新模式,BOTH代表支持上拉和下拉,PULL_FROM_END代表上拉,PULL_FROM_START代表下拉 */        refreshScrollView.setMode(PullToRefreshBase.Mode.BOTH);        //3.通过getLoadingLayoutProxy 方法来指定上拉和下拉时显示的状态的区别(也就是设置向下拉的时候头部里面显示的文字)        //此时这里设置的是下拉刷新的时候显示的文字,所以第一个设置true表示现在是刷新,第二个设置为false        startLabels = refreshScrollView.getLoadingLayoutProxy(true, false);        startLabels.setPullLabel("下拉刷新");        startLabels.setRefreshingLabel("正在刷新...");        startLabels.setReleaseLabel("放开刷新");        ILoadingLayout endLabels = refreshScrollView.getLoadingLayoutProxy(false, true);        endLabels.setPullLabel("上拉刷新");        endLabels.setRefreshingLabel("正在载入...");        endLabels.setReleaseLabel("放开刷新...");        /**         * 监听事件         */        refreshScrollView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {            @Override            public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {                getRefreshData();            }            @Override            public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {                page_num++;                getDataFromNet();            }        });    }    /**     * 轮播图的方法     */    private void lunBoTu() {        NetDataUtil.getData("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10", getActivity(), new JsonCallBack() {            @Override            public void getJsonString(String json) {                //这个结合记录轮播图的所有地址                imageUrlList = new ArrayList<String>();                //解析数据                Gson gson = new Gson();                DataDataBean2 lunBoBean = gson.fromJson(json, DataDataBean2.class);                List<DataDataBean2.NewslistBean> essay = lunBoBean.getNewslist();                for (DataDataBean2.NewslistBean essayBean: essay) {                    //essayBean.getAuthor().get(0).getWeb_url()                    imageUrlList.add(essayBean.getPicUrl());                }                //此时应该根据图片的路径,加载图片,设置适配器                ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getActivity(), imageUrlList);                viewPager.setAdapter(viewPagerAdapter);                //1.手动可以无限滑动....maxValue....把当前开始展示的位置放在足够大的某个位置                viewPager.setCurrentItem(imageUrlList.size()*100000);                //2.自动轮播                handler.sendEmptyMessageDelayed(0,2000);            }        });    }    /**     * 下拉刷新获取数据     */    private void getRefreshData() {        NetDataUtil.getData("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=1", getActivity(), new JsonCallBack() {            @Override            public void getJsonString(String json) {                //解析                Gson gson = new Gson();                DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);                //先清空一下数据                list.clear();                //添加到集合的最前边,,,,(0,,,,)                list.addAll(0,dataDataBean.getNewslist());                //设置适配器                setAdapter();                //设置适配器之后停止刷新的操作                refreshScrollView.onRefreshComplete();                //可以设置刷新的时间....                startLabels.setLastUpdatedLabel("上次更新时间:"+new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis())));//last最近的,最后一次update修改/更新            }        });    }    /**     * 刚开始进入页面获取网络数据....还可以作为上拉加载获取数据的操作     *     *     */    private void getDataFromNet() {        //第一个参数是接口,第二个上下文,第三个回调json数据        NetDataUtil.getData("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=1"+page_num, getActivity(), new JsonCallBack() {            @Override            public void getJsonString(String json) {                //解析                Gson gson = new Gson();                DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);                //往后面添加...                list.addAll(dataDataBean.getNewslist());                //设置适配器                setAdapter();                //停止刷新                refreshScrollView.onRefreshComplete();            }        });    }    /**     * 设置适配器的方法     */    private void setAdapter() {        if (listViewAdapter == null){            listViewAdapter = new MyAdapter(getActivity(),list);            gridView.setAdapter(listViewAdapter);        }else {            listViewAdapter.notifyDataSetChanged();        }    }}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
public class Fragmenthome extends Fragment {    private TabLayout tabLayout;    private ViewPager viewPager;    private List<String> list;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.home,container,false);        tabLayout = view.findViewById(R.id.tab);        viewPager =view.findViewById(R.id.view_pager);        return view;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        list = new ArrayList<>();        list.add("推荐");        list.add("热点");        list.add("北京");        list.add("视频");        list.add("社会");        list.add("图片");        //设置适配器        viewPager.setAdapter(new FragmentPagerAdapter(getChildFragmentManager()) {            @Override            public CharSequence getPageTitle(int position) {                return list.get(position);            }            @Override            public Fragment getItem(int position) {                Fragment fragment = null;                switch (position) {                    case 0:                        fragment = new Fragmenttuijian();                        break;                    case 1:                        fragment = new Fragmentredian();                        break;                    case 2:                        fragment = new Fragmentbeijing();                        break;                    case 3:                        fragment = new Fragmentshipin();                        break;                    case 4:                        fragment = new Fragmentshehui();                        break;                    case 5:                        fragment = new Fragmenttupian();                        break;                    default:                        break;                }                return fragment;            }            @Override            public int getCount() {                return list.size();            }        });        //关联        tabLayout.setupWithViewPager(viewPager);        viewPager.setOffscreenPageLimit(list.size());    }}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
public class Fragmentbeijing extends Fragment {    private PullToRefreshListView refreshListView;    private List<DataDataBean.NewslistBean> list = new ArrayList<>();    private MyAdapter myAdapter;    private int page_num = 1;    private ILoadingLayout startLabels;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.tuijian_view,container,false);        refreshListView = view.findViewById(R.id.tuijian_list_view);        return view;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        //1.设置listView的适配器        getDataFromNet();        //2.设置刷新模式        /*设置pullToRefreshListView的刷新模式,BOTH代表支持上拉和下拉,PULL_FROM_END代表上拉,PULL_FROM_START代表下拉 */        refreshListView.setMode(PullToRefreshBase.Mode.BOTH);        //3.通过getLoadingLayoutProxy 方法来指定上拉和下拉时显示的状态的区别(也就是设置向下拉的时候头部里面显示的文字)        //此时这里设置的是下拉刷新的时候显示的文字,所以第一个设置true表示现在是刷新,第二个设置为false        final ILoadingLayout startLabels = refreshListView.getLoadingLayoutProxy(true, false);        startLabels.setPullLabel("下拉刷新");        startLabels.setRefreshingLabel("正在刷新...");        startLabels.setReleaseLabel("放开刷新");        ILoadingLayout endLabels = refreshListView.getLoadingLayoutProxy(false, true);        endLabels.setPullLabel("上拉刷新");        endLabels.setRefreshingLabel("正在载入...");        endLabels.setReleaseLabel("放开刷新...");        //4.设置监听事件        /**         * 如果Mode设置成Mode.BOTH,需要设置刷新Listener为OnRefreshListener2,并实现onPullDownToRefresh()、         * onPullUpToRefresh()两个方法。         如果Mode设置成Mode.PULL_FROM_START或Mode.PULL_FROM_END,需要设置刷新Listener为OnRefreshListener,         同时实现onRefresh()方法。         当然也可以设置为OnRefreshListener2,但是Mode.PULL_FROM_START的时候只调用onPullDownToRefresh()方法,         Mode.PULL_FROM_END的时候只调用onPullUpToRefresh()方法         */        refreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {            //下拉刷新的时候调用的方法....请求第一页的数据,清空之前的数据,然后再添加设置适配器            @Override            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {                NetDataUtil.getData("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=1", getActivity(), new JsonCallBack() {                    @Override                    public void getJsonString(String json) {                        //解析                        Gson gson = new Gson();                        DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);                        //先清空一下数据                        list.clear();                        //添加到集合的最前边,,,,(0,,,,)                        list.addAll(0,dataDataBean.getNewslist());                        //设置适配器                        setAdapter();                        //设置适配器之后停止刷新的操作                        refreshListView.onRefreshComplete();                        //可以设置刷新的时间....//                        startLabels.setLastUpdatedLabel("上次更新时间:"+new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis())));//last最近的,最后一次update修改/更新                    }                });            }            //上拉刷新的时候调用的方法..page++,然后在请求数据            @Override            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {                page_num++;                getDataFromNet();            }        });    }    /**     * 获取网络数据     */    private void getDataFromNet() {        //第一个参数是接口,第二个上下文,第三个回调json数据        NetDataUtil.getData("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=1"+page_num, getActivity(), new JsonCallBack() {            @Override            public void getJsonString(String json) {                //解析                Gson gson = new Gson();                DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);                //往后面添加...                list.addAll(dataDataBean.getNewslist());                //设置适配器                setAdapter();                //停止刷新                refreshListView.onRefreshComplete();            }        });    }    private void setAdapter() {        if (myAdapter == null){            myAdapter = new MyAdapter(getActivity(),list);            refreshListView.setAdapter(myAdapter);        }else {            myAdapter.notifyDataSetChanged();        }    }}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
public class GridViewAdapter extends BaseAdapter{    Context context;    List<DataDataBean2.NewslistBean> list;    public GridViewAdapter(Context context, List<DataDataBean2.NewslistBean> list) {        this.context = context;        this.list = list;    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int i) {        return list.get(i);    }    @Override    public long getItemId(int i) {        return i;    }    @Override    public View getView(int i, View view, ViewGroup viewGroup) {        ViewHolder holder;        if (view == null){            view = View.inflate(context, R.layout.item_img_layout2,null);            holder = new ViewHolder();            holder.textView = view.findViewById(R.id.text_title);            holder.imageView = view.findViewById(R.id.image_view);            view.setTag(holder);        }else {            holder = (ViewHolder) view.getTag();        }        holder.textView.setText(list.get(i).getTitle());        //展示图片的时候,,,getImages这个集合有的有,有的为空...所以要进行.判断        if (list.get(i).getPicUrl() != null){            //此时加载图片显示            ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(),holder.imageView, ImageLoaderUtil.gettupianyuanjiao());        }        return view;    }    private class ViewHolder{        TextView textView;        ImageView imageView;    }}