引导页+抽屉+页面切换+频道+Tablayout+上下拉刷新多条目AsynTask
引导页的页面
首先是布局文件
<android.support.v4.view.ViewPagerandroid:id="@+id/pager"android:layout_width="match_parent"android:layout_height="match_parent" /><RadioGroupandroid:id="@+id/group"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_marginTop="-80dp"android:gravity="center"></RadioGroup><Buttonandroid:id="@+id/btn"android:layout_marginTop="-50dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="点击跳转"/>
引导页主页面
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);int[] arr = {R.drawable.aa,R.drawable.bb,R.drawable.cc,R.drawable.dd};pager = (ViewPager)findViewById(R.id.pager);btn =(Button) findViewById(R.id.btn);group = (RadioGroup)findViewById(R.id.group);btn.setVisibility(View.GONE);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, ShouActivity.class);startActivity(intent);}});list = new ArrayList<>();for (int i = 0 ;i<arr.length;i++){ImageView imageView = new ImageView(MainActivity.this);imageView.setImageResource(arr[i]);list.add(imageView);RadioButton button = new RadioButton(MainActivity.this);group.addView(button);}group.check(group.getChildAt(0).getId());Log.e("yxx","打印数据"+list.size());pager.setAdapter(new PagerAdapter() {@Overridepublic int getCount() {return list.size();}@Overridepublic boolean isViewFromObject(@NonNull View arg0, @NonNull Object agr1) {return arg0 == agr1;}@NonNull@Overridepublic Object instantiateItem(@NonNull ViewGroup container, int position) {ImageView view = list.get(position);container.addView(view);return view;}@Overridepublic void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {container.removeView((View) object);}});pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {@Overridepublic void onPageScrolled(int i, float v, int i1) {}@Overridepublic void onPageSelected(int i) {group.check(group.getChildAt(i).getId());if(i == list.size()-1){btn.setVisibility(View.VISIBLE);}else{btn.setVisibility(View.GONE);}}@Overridepublic void onPageScrollStateChanged(int i) {}});}
这时候就会进入到我们的切换页面和抽屉
这个时候防止页面混乱所以写了两个LinearLayout
<android.support.v4.widget.DrawerLayout 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=".MyActivity.ShouActivity"android:orientation="vertical"android:id="@+id/drawlay"><LinearLayoutandroid:layout_width="150dp"android:layout_height="match_parent"android:layout_gravity="left"android:orientation="vertical"android:background="@color/colorPrimaryDark"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="我是神"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="我是神"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="我是神"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><FrameLayoutandroid:id="@+id/frag"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="9"></FrameLayout><RadioGroupandroid:id="@+id/group"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:orientation="horizontal"><RadioButtonandroid:id="@+id/radio0"android:layout_width="0dp"android:layout_height="match_parent"android:button="@null"android:layout_weight="1"android:gravity="center"android:text="首页"/><RadioButtonandroid:id="@+id/radio1"android:layout_width="0dp"android:layout_height="match_parent"android:button="@null"android:layout_weight="1"android:gravity="center"android:text="我的"/><RadioButtonandroid:id="@+id/radio2"android:layout_width="0dp"android:layout_height="match_parent"android:button="@null"android:layout_weight="1"android:gravity="center"android:text="第三个"/></RadioGroup></LinearLayout></android.support.v4.widget.DrawerLayout>
接下来看主要的代码
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_shou);drawr = (DrawerLayout)findViewById(R.id.drawlay);frag = (FrameLayout)findViewById(R.id.frag);group = (RadioGroup)findViewById(R.id.group);actionBar = getSupportActionBar();actionBar.setDisplayHomeAsUpEnabled(true);drawr.addDrawerListener(new DrawerLayout.DrawerListener() {@Overridepublic void onDrawerSlide(@NonNull View view, float v) {}@Overridepublic void onDrawerOpened(@NonNull View view) {}@Overridepublic void onDrawerClosed(@NonNull View view) {Toast.makeText(ShouActivity.this,"我关闭了",Toast.LENGTH_LONG).show();}@Overridepublic void onDrawerStateChanged(int i) {}});ArrayList<Fragment> list = new ArrayList<>();manager = getSupportFragmentManager();FragmentTransaction transaction = manager.beginTransaction();fragment1 = new Fragment1();fragment2 = new Fragment2();fragment3 = new Fragment3();transaction.add(R.id.frag, fragment1,"fragment1");transaction.add(R.id.frag, fragment2);transaction.add(R.id.frag, fragment3);transaction.show(fragment1).hide(fragment2).hide(fragment3);transaction.commit();group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {FragmentTransaction transaction1 = manager.beginTransaction();switch (checkedId){case R.id.radio0:transaction1.show(fragment1).hide(fragment2).hide(fragment3).commit();break;case R.id.radio1:transaction1.show(fragment2).hide(fragment1).hide(fragment3).commit();break;case R.id.radio2:transaction1.show(fragment3).hide(fragment2).hide(fragment1).commit();break;}}});}//因为是Fragment之间的传值所以在Activity之间进行传值@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);Fragment fragment1 = manager.findFragmentByTag("fragment1");fragment1.onActivityResult(requestCode, resultCode, data);}
接下来就到我们的频道了
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><android.support.design.widget.TabLayoutandroid:id="@+id/tablayout"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"/><Buttonandroid:id="@+id/btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="+"/></LinearLayout><android.support.v4.view.ViewPagerandroid:id="@+id/pager1"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"/></LinearLayout>
这个是具体代码
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment1,container,false);tablayout = (TabLayout)view.findViewById(R.id.tablayout);pager = (ViewPager)view.findViewById(R.id.pager1);btn =(Button)view.findViewById(R.id.btn);myAdapter = new MyAdapter(getChildFragmentManager());pager.setAdapter(myAdapter);tablayout.setupWithViewPager(pager);btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {ChannelActivity.startChannelActivity((AppCompatActivity) getActivity(),channellist);}});initData();return view;}private void initData() {channellist.add(new ChannelBean("北京",true));channellist.add(new ChannelBean("北京1",true));channellist.add(new ChannelBean("北京2",true));channellist.add(new ChannelBean("北京3",false));channellist.add(new ChannelBean("北京4",false));for (int i = 0 ;i<channellist.size();i++){if(channellist.get(i).isSelect()){tablayout.addTab(tablayout.newTab().setText(channellist.get(i).getName()));if(i==0){fragmentlist.add(new Fragment01());}else if(i == 1){fragmentlist.add(new Fragment02());}else{fragmentlist.add(new Fragment03());}}}myAdapter.notifyDataSetChanged();}@Overridepublic void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);String extra = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY);Gson gson = new Gson();Type type = new TypeToken<ArrayList<ChannelBean>>() {}.getType();channellist = gson.fromJson(extra, type);tablayout.removeAllTabs();fragmentlist.clear();for (int i = 0 ;i<channellist.size();i++){if(channellist.get(i).isSelect()){tablayout.addTab(tablayout.newTab().setText(channellist.get(i).getName()));if(i==0){fragmentlist.add(new Fragment01());}else if(i == 1){fragmentlist.add(new Fragment02());}else{fragmentlist.add(new Fragment03());}}}myAdapter.notifyDataSetChanged();}private class MyAdapter extends FragmentPagerAdapter {public MyAdapter(FragmentManager fm) {super(fm);}@Overridepublic Fragment getItem(int i) {return fragmentlist.get(i);}@Overridepublic int getCount() {return fragmentlist.size();}@Nullable@Overridepublic CharSequence getPageTitle(int position) {return channellist.get(position).getName();}}
轮播图和上下拉刷新
public class Fragment01 extends Fragment {private Banner banader;String[] urls = {"https://img-my.csdn.net/uploads/201407/26/1406383265_8550.jpg","https://lh4.googleusercontent.com/--dq8niRp7W4/URquVgmXvgI/AAAAAAAAAbs/-gnuLQfNnBA/s160-c/A%252520Song%252520of%252520Ice%252520and%252520Fire.jpg","https://lh5.googleusercontent.com/-7qZeDtRKFKc/URquWZT1gOI/AAAAAAAAAbs/hqWgteyNXsg/s160-c/Another%252520Rockaway%252520Sunset.jpg","https://img-my.csdn.net/uploads/201407/26/1406383265_8550.jpg","https://lh6.googleusercontent.com/-8HO-4vIFnlw/URquZnsFgtI/AAAAAAAAAbs/WT8jViTF7vw/s160-c/Antelope%252520Hallway.jpg","https://lh4.googleusercontent.com/-WIuWgVcU3Qw/URqubRVcj4I/AAAAAAAAAbs/YvbwgGjwdIQ/s160-c/Antelope%252520Walls.jpg"};String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";ArrayList<Bean.DataBean> list = new ArrayList<Bean.DataBean>();private PullToRefreshListView pth;private MyAdapter myAdapter;@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment01,container,false);banader = (Banner)view.findViewById(R.id.bander);pth = (PullToRefreshListView) view.findViewById(R.id.pth);pth.setMode(PullToRefreshBase.Mode.BOTH);myAdapter = new MyAdapter(getActivity(), list);pth.setAdapter(myAdapter);ininlun();initData();return view;}private void initData() {if(Netutil.isconn(getActivity())){new MAsncTask().execute(urlString);}else{Toast.makeText(getActivity(),"我没有网",Toast.LENGTH_LONG).show();}}private void ininlun() {final ImageLoader instance = ImageLoader.getInstance();banader.setImageLoader(new com.youth.banner.loader.ImageLoader() {@Overridepublic void displayImage(Context context, Object path, ImageView imageView) {instance.displayImage((String)path,imageView);}});banader.setImages(Arrays.asList(urls));banader.start();}private class MAsncTask extends AsyncTask<String ,Void,String>{@Overrideprotected String doInBackground(String... strings ) {String netjson = NetWordUtils.getNetjson(strings[0]);return netjson;}@Overrideprotected void onPostExecute(String s) {super.onPostExecute(s);Gson gson = new Gson();Bean bean = gson.fromJson(s, Bean.class);List<Bean.DataBean> beanList = bean.getData();list.addAll(beanList);myAdapter.notifyDataSetChanged();}}
布局
导入依赖
<com.youth.banner.Bannerandroid:id="@+id/bander"android:layout_weight="3"android:layout_width="match_parent"android:layout_height="0dp"/><com.handmark.pulltorefresh.library.PullToRefreshListViewandroid:id="@+id/pth"android:layout_weight="7"android:layout_width="match_parent"android:layout_height="0dp"/>
判断网咯
public class Netutil {public static boolean isconn(Context context) {boolean isf = false;ConnectivityManager systemService = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo networkInfo = systemService.getActiveNetworkInfo();if(networkInfo!=null){isf = true;}return isf;}
}
图片网络获取
public class MApp extends Application {@Overridepublic void onCreate() {super.onCreate();ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build();ImageLoader instance = ImageLoader.getInstance();instance.init(build);/* ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).build();ImageLoader.getInstance().init(configuration);*/}
}
引导页+抽屉+页面切换+频道+Tablayout+上下拉刷新多条目AsynTask相关推荐
- 【Vue实用功能】Vue实现tab页多页面切换
Vue实现tab页多页面切换 实现路由发生变化时,新增一个tab标签页,点击其他标签时切换到对应的页面,刷新网页同时保留状态 这里就直接说它实现的代码就OK!!! VueX记录下每次新增后的tab标签 ...
- Android之app引导页(背景图片切换加各个页面动画效果)
转载:http://blog.csdn.net/lowprofile_coding/article/details/48037095 先看效果图: 1.显示三个页面的Activity 用view p ...
- vue 前端进行tab页面切换时,要求不刷新
项目中TagsView组件用于tab页面切换,在项目中已使用keep-alive,目标页面也开启了"缓存"标志,但是在tab标签点击切换时,有几个页面数据还是刷新了.查找了相关资料 ...
- Vue+Element实现tab页多页面切换
效果图GIF 源码地址 https://gitee.com/marlife/nav-tags.git 已经上传到Gitee(码云),代码拉下来之后: 1.执行安装命令:npm install 2.执行 ...
- 引导页onboarding页面XIB实现
系统: Mac OS 10.14.6, XCode 11,swift 5.0, iOS 13 写作时间:2019-11-04 说明 欢迎界面,英文成为OnBoarding页面用UIScrollView ...
- Android开发--实现Android引导页
几乎每个app都有引导页,下面我们来做一个引导页的实现. 引导页,是指软件首次进入或者更新完成后,软件显示的页面,一般展示软件特色功能或者更新的内容. 先判断是否第一次启动app,如果是,则进入引导页 ...
- mui 启动页和引导页
一.启动页和引导页的概念 "启动页"(splash):app的启动界面,每次启动都会看到的(每次打开QQ都会看到一只企鹅). "引导页"(guide):guid ...
- 黑色自适应简约个人主页引导页HTML源码
介绍: 个人引导页,页面非常简洁美观,而且还是自适应哦. 网盘下载地址: http://kekewl.cc/rvQd5gvu0pq0 图片: pc端 移动端:
- AUI tab实现页签滑动切换且下拉刷新(下拉固定title栏及tab栏)
声明:菜鸟一枚,入坑不久,如有欠缺,望大神给予好的建议,完善优化,分享他人. AUI tab实现页签滑动切换且下拉刷新(下拉固定title栏及tab栏) 1:aui tab分页签,手动侧滑或点击TAB ...
最新文章
- 【Flutter】Flutter 应用主题 ( ThemeData | 动态修改主题 )
- Halcon基础知识:常规数据、对象数据、对象元组
- Python 一路走来 Django
- 浅析如何在Nancy中生成API文档
- 按键精灵调用迅雷下载文件
- 【小松教你手游开发】【面试必读(编程基础)】几种常用的设计模式介绍
- Ubuntu16.04.1 安装Redis-Cluster
- PSS E v33.40 1CD(大型电力系统仿真计算软件)
- APISpace 标准中文电码查询API
- 【经验】CCF CSP认证问题
- 远程服务器 Linux 用cityscape训练DeepLabv3模型(Pytorch版)并用图像测试
- 大华sdk(java)上传人脸图片到人脸库,订阅人脸识别对比
- python的logo长什么样子
- 量子计算机能为我们做什么,为实现量子计算,我们还需要做些什么
- 第十二天内容《基础交换十二》
- IDS--入侵检测系统的学习
- java39阶台阶_第四届蓝桥杯javaC组_第39级台阶
- img加载图片失败后处理
- 【微来】软件使用方法
- Python3入门(一)