drawerlayout+tablelayout+fragment+轮播
来源:互联网 发布:电子数据交换的意思 编辑:程序博客网 时间:2024/06/05 20:50
//activity_main.xml
<?xml version="1.0" encoding="utf-8"?><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.week2.MainActivity"> <android.support.v4.widget.DrawerLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/mydrawer"> <!--主内容区域--> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <RadioGroup android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:id="@+id/rel_navigate" android:layout_alignParentBottom="true"> <RadioButton android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="首页" android:button="@null" android:gravity="center" android:id="@+id/rb_index" android:padding="3dp" android:background="@drawable/rb_selector" android:checked="true"/> <RadioButton android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="发现" android:button="@null" android:padding="3dp" android:gravity="center" android:id="@+id/rb_video" android:background="@drawable/rb_selector"/> <RadioButton android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="微头条" android:button="@null" android:gravity="center" android:padding="3dp" android:id="@+id/rb_top" android:background="@drawable/rb_selector"/> <RadioButton android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="我的" android:padding="3dp" android:button="@null" android:gravity="center" android:id="@+id/rb_me" android:background="@drawable/rb_selector"/> </RadioGroup> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/rel_navigate" android:id="@+id/main_content"></FrameLayout> </RelativeLayout> <RelativeLayout android:layout_width="260dp" android:layout_height="match_parent" android:id="@+id/rel_menu" android:layout_gravity="start" android:background="#550000ff"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher" android:id="@+id/img_title" android:layout_marginBottom="50dp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="这是侧边栏" android:layout_below="@+id/img_title"/> </RelativeLayout> </android.support.v4.widget.DrawerLayout></RelativeLayout>
//fragment1.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent"> <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="40dp" app:tabGravity="center" app:tabIndicatorColor="@color/colorAccent" app:tabMode="scrollable" app:tabSelectedTextColor="@color/colorPrimaryDark" app:tabTextColor="@color/colorPrimary" android:id="@+id/mytab"></android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/vp"></android.support.v4.view.ViewPager></LinearLayout>
//fragment2.3.4.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:background="#ffcccc" android:layout_height="match_parent"></LinearLayout>
//item.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginLeft="34dp" android:layout_marginStart="34dp" android:layout_marginTop="28dp" app:srcCompat="@mipmap/ic_launcher_round" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/imageView" android:layout_marginLeft="68dp" android:layout_marginStart="68dp" android:layout_toEndOf="@+id/imageView" android:layout_toRightOf="@+id/imageView" android:text="TextView" /></RelativeLayout>
//tablelayout1.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" xmlns:ptr="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/vp" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"></android.support.v4.view.ViewPager> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:id="@+id/lin_bottom" android:layout_alignBottom="@+id/vp" android:gravity="center" android:layout_marginBottom="7dp" ></LinearLayout> <com.handmark.pulltorefresh.library.PullToRefreshListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/pull_lv" android:layout_below="@+id/lin_bottom" ptr:ptrHeaderTextColor="#FFFFFF" ptr:ptrHeaderBackground="#383838" ptr:ptrAnimationStyle="flip" ptr:ptrDrawable="@drawable/default_ptr_flip"> </com.handmark.pulltorefresh.library.PullToRefreshListView></RelativeLayout>
//tablelayout2.3.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:background="#ccffff" android:layout_height="match_parent"></LinearLayout>
//MainActivity
package com.example.week2;import android.support.v4.app.Fragment;import android.support.v4.widget.DrawerLayout;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.ImageView;import android.widget.RadioGroup;import android.widget.RelativeLayout;import com.example.week2.fragment.FragmentA;import com.example.week2.fragment.FragmentB;import com.example.week2.fragment.FragmentC;import com.example.week2.fragment.FragmentD;public class MainActivity extends AppCompatActivity { private ImageView imgTitle; private RelativeLayout relMenu; private DrawerLayout drawerLayout; private RadioGroup radioGroup; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); drawerLayout = (DrawerLayout) findViewById(R.id.mydrawer); imgTitle = (ImageView) findViewById(R.id.img_title); radioGroup = (RadioGroup) findViewById(R.id.rel_navigate); //侧滑菜单的视图 relMenu = (RelativeLayout) findViewById(R.id.rel_menu); imgTitle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //关闭,侧滑菜单 drawerLayout.closeDrawer(relMenu); } }); radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==R.id.rb_index){ Log.d("zzz","add index fragment ***********"); addFragment(new FragmentA()); }else if(checkedId==R.id.rb_top){ addFragment(new FragmentB()); }else if(checkedId==R.id.rb_me){ addFragment(new FragmentC()); }else if(checkedId==R.id.rb_video){ addFragment(new FragmentD()); } } }); //默认添加"首页" addFragment(new FragmentA()); } public void addFragment(Fragment fragment){ getSupportFragmentManager().beginTransaction().replace(R.id.main_content,fragment).commit(); }}
//MyApplication
package com.example.week2.lunbo;import android.app.Application;/** * Created by 123 on 2017/10/18. */public class MyApplication extends Application{ @Override public void onCreate() { super.onCreate(); //进行全局初使化 imageloaderUtil.initConfig(this); }}
//ImagePager
package com.example.week2.lunbo;import android.content.Context;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;/** * Created by 123 on 2017/10/18. */public class ImagePager extends PagerAdapter{ Context context; List<String> list;//网络图片地址 public ImagePager(Context context, List<String> list) { this.context = context; this.list = list; } //返回页面的数量 @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } //0~getCount返回的值-1 @Override public Object instantiateItem(ViewGroup container, int position) { //返回当前显示的视图 ImageView imageView = new ImageView(context); imageView.setScaleType(ImageView.ScaleType.FIT_XY); //加载网络的图片list.get(position%list.size()) ImageLoader.getInstance().displayImage(list.get(position%list.size()),imageView,imageloaderUtil.getImageOptions()); //添加到容器 container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); }}
//imageloaderUtil
package com.example.week2.lunbo;import android.content.Context;import android.graphics.Bitmap;import android.os.Environment;import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import java.io.File;/** * Created by 123 on 2017/10/18. */public class imageloaderUtil { /** * ImageLoader的配置 * @param context */ public static void initConfig(Context context) { //配置// File cacheFile=context.getExternalCacheDir(); File cacheFile= new File(Environment.getExternalStorageDirectory()+"/"+"imgages"); ImageLoaderConfiguration config=new ImageLoaderConfiguration.Builder(context) .memoryCacheExtraOptions(480, 800)//缓存图片最大的长和宽 .threadPoolSize(2)//线程池的数量 .threadPriority(4) .memoryCacheSize(2*1024*1024)//设置内存缓存区大小 .diskCacheSize(20*1024*1024)//设置sd卡缓存区大小 .diskCache(new UnlimitedDiskCache(cacheFile))//自定义缓存目录 .writeDebugLogs()//打印日志内容 .diskCacheFileNameGenerator(new Md5FileNameGenerator())//给缓存的文件名进行md5加密处理 .build(); ImageLoader.getInstance().init(config); } /** * 获取图片设置类 * @return */ public static DisplayImageOptions getImageOptions(){ DisplayImageOptions optionsoptions=new DisplayImageOptions.Builder() .cacheInMemory(true)//使用内存缓存 .cacheOnDisk(true)//使用磁盘缓存 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片格式 .build(); return optionsoptions; }}
//FragmentA
package com.example.week2.fragment;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.example.week2.R;import java.util.ArrayList;import java.util.List;/** * Created by 123 on 2017/10/21. */public class FragmentA extends Fragment{ private ViewPager viewPager; private TabLayout tabLayout; private List<String> lists=new ArrayList<String>(); View v; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { v=View.inflate(getActivity(),R.layout.fragment1,null); viewPager = (ViewPager) v.findViewById(R.id.vp); tabLayout = (TabLayout) v.findViewById(R.id.mytab); //tab标题信息 intTabData(); //设置适配器 ,,得到子fragment的管理者,使用getChildFragmentManager viewPager.setAdapter(new MyAdapter(getChildFragmentManager())); //建立关联 tabLayout.setupWithViewPager(viewPager); //指定加载的页数 http://blog.csdn.net/qq_29134495/article/details/51548002 viewPager.setOffscreenPageLimit(lists.size()); return v; } private void intTabData() { lists.add("推荐"); lists.add("实战"); lists.add("训练"); } class MyAdapter extends FragmentPagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } //获取tab导航文本 @Override public CharSequence getPageTitle(int position) { return lists.get(position); } @Override public Fragment getItem(int position) { Fragment fragment =null; switch (position){ case 0: fragment = new FragA(); break; case 1: fragment = new FragB(); break; case 2: fragment = new FragC(); break; default: break; } return fragment; } @Override public int getCount() { return lists.size(); } }}
//FragmentB,C,D
package com.example.week2.fragment;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.example.week2.R;/** * Created by 123 on 2017/10/21. */public class FragmentB extends Fragment{ View v; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { v=inflater.inflate(R.layout.fragment2,null); return v; }}
//TableA 轮播和pulltorefresh
package com.example.week2.fragment;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v4.view.ViewPager;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;import com.example.week2.R;import com.example.week2.been.Bean;import com.example.week2.lunbo.ImagePager;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.ILoadingLayout;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import com.nostra13.universalimageloader.core.ImageLoader;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.util.ArrayList;import java.util.List;/** * Created by 123 on 2017/10/21. */public class FragA extends Fragment implements PullToRefreshListView.OnRefreshListener2<ListView>{ View v; private ViewPager viewPager; private List<String> list; private LinearLayout linearLayout; //存放小圆点控件的集合 private List<ImageView> images; int type=1; int index=1; private Handler hander = new Handler(); List<Bean.DataBean> list3=new ArrayList<Bean.DataBean>(); //// private PullToRefreshListView pullToRefreshListView; MyAdapter myAdapter; private Handler myHandler=new Handler(){ @Override public void handleMessage(Message msg) { //获取当前正在显示的页面 int index=viewPager.getCurrentItem(); viewPager.setCurrentItem(index+1); //改变小圆点 setSelectedPoint((index+1)%list.size()); //延迟发送消息 sendEmptyMessageDelayed(1,2000); } }; private StringBuilder builder; /** * 改变小圆点图片 * @param index 页面的下标 */ public void setSelectedPoint(int index){ for(int i=0;i<images.size();i++){ if(i==index){ images.get(i).setImageResource(R.drawable.point_selected); }else{ images.get(i).setImageResource(R.drawable.point_un_selected); } } } public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { v=inflater.inflate(R.layout.frag1,null); viewPager = (ViewPager)v.findViewById(R.id.vp); pullToRefreshListView = (PullToRefreshListView)v. findViewById(R.id.pull_lv); linearLayout = (LinearLayout)v.findViewById(R.id.lin_bottom); list = new ArrayList<>(); list.add("http://pic8.nipic.com/20100701/5290458_114840036316_2.jpg"); list.add("http://pic2.nipic.com/20090424/1468853_230119053_2.jpg"); list.add("http://img3.3lian.com/2013/s1/20/d/57.jpg"); list.add("http://pic39.nipic.com/20140226/18071023_164300608000_2.jpg"); list.add("http://a0.att.hudong.com/15/08/300218769736132194086202411_950.jpg"); //初始化小圆点 initDoc(); //设置适配器 viewPager.setAdapter(new ImagePager(getActivity(),list)); //设置适配器 viewPager.setAdapter(new ImagePager(getActivity(),list)); //实现自动播放 myHandler.sendEmptyMessageDelayed(1,2000); initLv(); init(); return v; } private void initDoc() { images=new ArrayList<>(); for(int i=0;i<list.size();i++){ ImageView imgPoint=new ImageView(getActivity()); //设置图片的缩放模式 imgPoint.setScaleType(ImageView.ScaleType.FIT_XY); //设置要显示的图片 if(i==0){ //红色的点 imgPoint.setImageResource(R.drawable.point_selected); }else{ imgPoint.setImageResource(R.drawable.point_un_selected); } //设置宽度与高度 LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(40,40); params.setMargins(10,0,10,0); //添加到底部容器中 linearLayout.addView(imgPoint,params); //添加到集合中 images.add(imgPoint); } }class Mytask extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... strings) { try { //获取url URL url = new URL(strings[0]); //请求网络 HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); int code = urlConnection.getResponseCode(); //判断是否返回成功 if (code == 200) { //获取网络信息 InputStream inputStream = urlConnection.getInputStream(); BufferedReader bf = new BufferedReader(new InputStreamReader(inputStream)); builder = new StringBuilder(); String s = ""; //拼接 while ((s = bf.readLine()) != null) { builder.append(s); } } } catch (Exception e) { e.printStackTrace(); } return builder.toString(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); Bean json = gson.fromJson(s, Bean.class); List<Bean.DataBean> list2 = json.getData(); //list.addAll(list1); if (type == 1) { list3.addAll(0,list2); } else { list3.addAll(list2); } setAdapter(); }} public void init() { Mytask mytask = new Mytask(); mytask.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/1"); } public void setAdapter() { if (myAdapter == null) { myAdapter = new MyAdapter(); pullToRefreshListView.setAdapter(myAdapter); } else { myAdapter.notifyDataSetChanged(); } } public void addtoTop() { type = 1; index++; Mytask mytask = new Mytask(); mytask.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/" + index); } public void addtoBottom() { type = 2; index++; Mytask mytask = new Mytask(); Log.i("aaa", "addtoBottom: "+index); mytask.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/" + index); } @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { addtoTop(); hander.postDelayed(new Runnable() { @Override public void run() { //刷新完成,必须在异步下完成 pullToRefreshListView.onRefreshComplete(); //刷新适配器 } }, 1000); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { addtoBottom(); hander.postDelayed(new Runnable() { @Override public void run() { //刷新完成,必须在异步下完成 pullToRefreshListView.onRefreshComplete(); //刷新适配器 } }, 1000); } public void initLv() { //设置刷新模式 ,both代表支持上拉和下拉,pull_from_end代表上拉,pull_from_start代表下拉 pullToRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);/*这里通过getLoadingLayoutProxy 方法来指定上拉和下拉时显示的状态的区别,第一个true 代表下来状态 ,第二个true 代表上拉的状态如果想区分上拉和下拉状态的不同,可以分别设置*/ ILoadingLayout startLabels = pullToRefreshListView.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新"); startLabels.setRefreshingLabel("正在拉"); startLabels.setReleaseLabel("放开刷新"); ILoadingLayout endLabels = pullToRefreshListView.getLoadingLayoutProxy(false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新..."); pullToRefreshListView.setOnRefreshListener(this); }class MyAdapter extends BaseAdapter { @Override public int getCount() { return list3.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { Viewholder vh; if (convertView == null) { vh = new Viewholder(); convertView = View.inflate(getActivity(), R.layout.item, null); vh.img = (ImageView) convertView.findViewById(R.id.imageView); vh.tv = (TextView) convertView.findViewById(R.id.textView2); convertView.setTag(vh); } else { vh = (Viewholder) convertView.getTag(); } vh.tv.setText(list3.get(position).getNews_title()); ImageLoader.getInstance().displayImage(list3.get(position).getPic_url(), vh.img); return convertView; }} public static class Viewholder { ImageView img; TextView tv; }}
//TableB,C
package com.example.week2.fragment;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.example.week2.R;/** * Created by 123 on 2017/10/21. */public class FragB extends Fragment{ View v; public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { v=inflater.inflate(R.layout.frag2,null); return v; }}
//Bean
package com.example.week2.been;import java.util.List;/** * Created by 123 on 2017/10/21. */public class Bean { /** * status : 1 * info : 获取内容成功 * data : [{"news_id":"13811","news_title":"深港澳台千里连线,嘉年华会今夏入川","news_summary":"6月17\u201420日,\u201c2016成都深港澳台嘉年华会\u201d(简称嘉年华会)将在成都世纪城国际会展中心举办。其主办方励展华博借力旗","pic_url":"http://f.expoon.com/sub/news/2016/01/21/887844_230x162_0.jpg"},{"news_id":"13810","news_title":"第14届温州国际汽车展4月举行 设9大主题展馆","news_summary":"来自前不久举行的温州国际汽车展览会第一次新闻发布会的消息, 2016第14届温州国际汽车展览会定于4月7-10日在温州国","pic_url":"http://f.expoon.com/sub/news/2016/01/21/580828_230x162_0.jpg"},{"news_id":"13808","news_title":"第十二届中国(南安)国际水暖泵阀交易会 四大亮点","news_summary":"第十二届中国(南安)国际水暖泵阀交易会将于2月10日至12日(即农历正月初三至初五)在成功国际会展中心拉开帷幕。","pic_url":"http://f.expoon.com/sub/news/2016/01/21/745921_230x162_0.jpg"},{"news_id":"13805","news_title":"2016上海灯光音响展 商机无限,一触即发","news_summary":"2016上海国际专业灯光音响展即日起全面启动,海内外高端演艺设备商贸平台,商机无限,一触即发。6大洲,80个国家,25,","pic_url":"http://f.expoon.com/sub/news/2016/01/21/158040_230x162_0.jpg"},{"news_id":"13804","news_title":"第四届南京国际佛事展5月举行","news_summary":"2016年,\u201c第四届南京国际佛事文化用品展览会\u201d将于5月26-29日在南京国际展览中心举办。","pic_url":"http://f.expoon.com/sub/news/2016/01/21/865222_230x162_0.jpg"},{"news_id":"13802","news_title":"上海国际牛仔服装博览会 拓展国际贸易大市场","news_summary":"2016年第三届上海国际牛仔服装博览会将于4月19-21日再次璀璨再现上海世博展览馆,共同探讨牛仔流行趋势,诠释牛仔文化","pic_url":"http://f.expoon.com/sub/news/2016/01/20/370858_230x162_0.jpg"},{"news_id":"13800","news_title":"第三届兰州年货会在甘肃国际会展中心本月19日开幕","news_summary":"由中国商业联合会、甘肃省商业联合会、兰州市商务局主办,甘肃省酒类商品管理局、兰州市城关区商务局、第十四届西安年货会组委会","pic_url":"http://f.expoon.com/sub/news/2016/01/20/868385_230x162_0.jpg"},{"news_id":"13799","news_title":"首届移动拍卖艺术博览会启动","news_summary":"首届移动拍卖博览会已于2016年1月全面启动,由大咖拍卖主办,联合全国艺术机构共同打造拍卖艺术博览会主会场,近百场拍卖专","pic_url":"http://f.expoon.com/sub/news/2016/01/20/768695_230x162_0.jpg"},{"news_id":"13798","news_title":"武汉金融理财投资博览会将在5月举办","news_summary":"由武汉市贸促会、上海《理财周刊》社、湖北好博塔苏斯展览有限公司等单位联合发起的\u201c2016武汉金融理财投资博览会\u201d,将在武","pic_url":"http://f.expoon.com/sub/news/2016/01/20/512947_230x162_0.jpg"},{"news_id":"13796","news_title":"第三届中国微商博览会 3月底济南举办","news_summary":"2015年,沸点天下开创了微商行业第一个展会\u2014\u2014中国微商博览会,并于2015年成功举行两届,让微商展会从无到有,并且起了","pic_url":"http://f.expoon.com/sub/news/2016/01/20/348021_230x162_0.jpg"},{"news_id":"13793","news_title":"2016中国西部国际丝绸博览会","news_summary":"\u201c2016年中国西部国际丝绸博览会\u201d最新确定于2016年5月11日至15日在南充举行。据悉,\u201c丝博会\u201d的会徽、会标及宣传","pic_url":"http://f.expoon.com/sub/news/2016/01/19/113912_230x162_0.jpg"},{"news_id":"13792","news_title":"中国针棉织品交易会开拓\u201c西部市场\u201d","news_summary":"由国家商务部重点支持、中国纺织品商业协会主办的第98届中国针棉织品交易会将于3月15日~17日绽放成都。作为中国国内针棉","pic_url":"http://f.expoon.com/sub/news/2016/01/19/650175_230x162_0.jpg"},{"news_id":"13791","news_title":"乐山市第二十届房地产展示交易会开幕","news_summary":"美丽乐山,生态宜居。今日,乐山市第二十届房地产展示交易会在该市中心城区乐山广场开幕,展会将持续到1月24日。","pic_url":"http://f.expoon.com/sub/news/2016/01/19/321787_230x162_0.jpg"},{"news_id":"13790","news_title":"2016华中屋面与建筑防水技术展3月即将开幕","news_summary":"由湖北省建筑防水协会联合湖南、河南、江西、安徽五省建筑防水协会主办\u201c2016第二届华中屋面与建筑防水技术展览会\u201d将于20","pic_url":"http://f.expoon.com/sub/news/2016/01/19/376254_230x162_0.jpg"},{"news_id":"13789","news_title":"2016海南国际旅游贸易博览会召开新闻发布会","news_summary":"近日,三亚旅游官方网从海南省\u201c首届海博会\u201d新闻发布会上获悉,海南省\u201c首届海博会\u201d将于2016年3月26日至4月1日在三亚","pic_url":"http://f.expoon.com/sub/news/2016/01/19/958046_230x162_0.jpg"},{"news_id":"13788","news_title":"2016阿里巴巴·贵州年货节展销会开幕","news_summary":"\u201c2016阿里巴巴·贵州年货节\u201d的展销会及迎春庙会昨日启动。150多家餐饮商参与的美食节、近千个品种组成的年货展销会等,","pic_url":"http://f.expoon.com/sub/news/2016/01/19/371688_230x162_0.jpg"},{"news_id":"13787","news_title":"第二届中国盆栽花卉交易会\u200b 本月28日开幕","news_summary":"据广州市政府获悉,经中国花卉协会和广州市政府批准,第二届中国盆栽花卉交易会将于本月28日至31日在广州花卉博览园举行。届","pic_url":"http://f.expoon.com/sub/news/2016/01/18/687647_230x162_0.jpg"},{"news_id":"13786","news_title":"李益:视野、品质、融合是展览工程国际化的必由路径","news_summary":"\u201c视野、品质、融合是中国展览工程走向国际化的必由路径。\u201d北京逸格天骄国际展览有限公司副总经理李益日前在第二十二届国际(常","pic_url":"http://f.expoon.com/sub/news/2016/01/18/343556_230x162_0.jpg"},{"news_id":"13785","news_title":"第八届中国国际集成住宅产业博览会将于5月在广州举办","news_summary":"2016年1月14日,第八届中国(广州)国际集成住宅产业博览会暨2016亚太建筑科技论坛\u2014\u2014新闻发布会在广州馆隆重召开。","pic_url":"http://f.expoon.com/sub/news/2016/01/18/581830_230x162_0.jpg"},{"news_id":"13784","news_title":"丝绸之路敦煌国际文化博览会筹备工作进展顺利","news_summary":"近日,丝绸之路(敦煌)国际文化博览会组委会第二次会议在兰召开。会议研究讨论了省直厅局一对一服务保障沿线省区市方案、文博会","pic_url":"http://f.expoon.com/sub/news/2016/01/18/656693_230x162_0.jpg"}] */ private int status; private String info; private List<DataBean> data; public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } public List<DataBean> getData() { return data; } public void setData(List<DataBean> data) { this.data = data; } public static class DataBean { /** * news_id : 13811 * news_title : 深港澳台千里连线,嘉年华会今夏入川 * news_summary : 6月17—20日,“2016成都深港澳台嘉年华会”(简称嘉年华会)将在成都世纪城国际会展中心举办。其主办方励展华博借力旗 * pic_url : http://f.expoon.com/sub/news/2016/01/21/887844_230x162_0.jpg */ private String news_id; private String news_title; private String news_summary; private String pic_url; public String getNews_id() { return news_id; } public void setNews_id(String news_id) { this.news_id = news_id; } public String getNews_title() { return news_title; } public void setNews_title(String news_title) { this.news_title = news_title; } public String getNews_summary() { return news_summary; } public void setNews_summary(String news_summary) { this.news_summary = news_summary; } public String getPic_url() { return pic_url; } public void setPic_url(String pic_url) { this.pic_url = pic_url; } }}
//MyTask
package com.example.week2.been;import android.os.AsyncTask;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;/** * 使用AsyncTask+HttpURLConnection请求数据 * Created by e531 on 2017/10/12. */public class MyTask extends AsyncTask<String,Void,String> { //申请一个接口类对象 private Icallbacks icallbacks; //将无参构造设置成私有的,使之在外部不能够调用 private MyTask(){} //定义有参构造方法 public MyTask(Icallbacks icallbacks) { this.icallbacks = icallbacks; } @Override protected String doInBackground(String... params) { String str=""; try { //使用HttpUrlConnection URL url=new URL(params[0]); HttpURLConnection connection=(HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); if(connection.getResponseCode()==200){ InputStream inputStream=connection.getInputStream(); //调用工具类中的静态方法 str=StreamToString.streamToStr(inputStream,"utf-8"); } } catch (MalformedURLException e) { e.printStackTrace(); }catch (IOException e){ e.printStackTrace(); } return str; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); //解析,封装到bean,更新ui组件 icallbacks.updateUiByjson(s); } //定义一个接口 public interface Icallbacks{ /** * 根据回传的json字符串,解析并更新页面组件 * @param jsonstr */ void updateUiByjson(String jsonstr); }}
//StreamToString
package com.example.week2.been;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;/** * Created by e531 on 2017/10/12. */public class StreamToString { public static String streamToStr(InputStream inputStream,String chartSet){ StringBuilder builder=new StringBuilder(); try { BufferedReader br=new BufferedReader(new InputStreamReader(inputStream,chartSet)); String con; while ((con=br.readLine())!=null){ builder.append(con); } br.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return ""; }}
//point_selected.xml,point_un_selected.xml,rb_selector.xml
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#f00"></solid></shape>
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#ccc"></solid></shape>
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@android:color/holo_red_dark"></item> <item android:drawable="@android:color/holo_blue_dark"></item></selector>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>android:name=".lunbo.MyApplication"gson-2.2.4.jaruniversal-image-loader-1.9.5.jar
阅读全文
0 0
- drawerlayout+tablelayout+fragment+轮播
- fragment ,轮播 实现
- Fragment 里面的轮播
- 轮播与fragment联动
- Fragment传值-ImagView轮播
- 子fragment无限轮播
- 动态fragment+viewpage+tablelayout
- TableLayout+Fragment +Viewpager 联动
- Fragment+Viewpager+嵌套Tablelayout+fragment
- PullToRefresh+TabLayout+DrawerLayout+无限轮播集成使用
- DrawerLayout侧滑+TabLayout横向滑动+ViewPager+轮播+PullToRefresh
- ANDROID drawerlayout+fragment侧滑
- PullToRefreshListView+Tablayout+Fragment+DrawerLayout
- android TableLayout和Fragment复用
- viewpager+fragment最简单的轮播
- Activity Fragment 相关 ViewPager轮播 相关
- fragment+Xlistview+viewpager无限轮播+imageloader
- 综合练习(轮播+Fragment+xlistView)
- 洛谷P1512 伊甸园日历游戏
- bzoj4027: [HEOI2015]兔子与樱花
- 作为一个运维工程师中的一员,现在开始我的博客之路.
- 设置idea
- 【读书总结】《三体》—— 生存是文明的第一需要
- drawerlayout+tablelayout+fragment+轮播
- 2017年Android最流行框架大全
- Object类的基本方法!!!
- 手机页面下拉刷新效果
- 一个程序的执行过程
- python3.6.3+opencv3.3.0学习笔记九--动态物体检测
- C/C++ typedef用法详解(干货)
- 宏定义浅谈 用宏定义交换数的奇偶位 用宏定义找出两个数最大值
- 简单购物车Demo_全选+反选+商品计价