跳转+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; }}
阅读全文
0 0
- 跳转+gridview+viewpager
- 跳转+侧拉+多条目+gridview+viewpager
- viewpager+gridview
- ViewPager+GridView
- 跳转gridview
- ViewPager + GridView实现GridView分页
- ViewPager+GridView显示popupwindow
- GridView ScrollView ViewPager
- ViewPager+gridView仿美团导航
- Viewpager + GridView 嵌套使用
- viewpager+gridView实现分页
- Viewpager和GridView
- ViewPager 和 GridView
- Viewpager实现跳转
- ViewPager点击跳转
- 自定义ViewPager+WebView跳转
- activitygroup+gridview 内部跳转
- viewpager+gridview gridview中的个数不确定
- android:configChanges属性
- azkaban遇到问题
- loj #2043. 「CQOI2016」K 远点对(KDTree)
- Eclipse搭建Android开发环境(安装ADT,Android4.4.2)
- [ElasticSearch]基本操作
- 跳转+gridview+viewpager
- react-native 使用Flexbox布局
- 使用mysql workbench自动生成ER图
- 【最佳实践】分布式数据库关联查询优化与最佳实践
- Java多线程系列-多线程合集1
- JavaScript中常用事件1
- const与重载
- 库打桩机制
- 重载重写重定义