首页设置头条布局
package com.example.wk.yuekao; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.NavigationView; import android.support.design.widget.Snackbar; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.GravityCompat; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { private List<String> list = new ArrayList<String>(); private TabLayout tabLayout; private ViewPager pager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); tabLayout = (TabLayout) findViewById(R.id.tab); pager = (ViewPager) findViewById(R.id.pager); list.add("头条"); list.add("社会"); list.add("国内"); list.add("国际"); list.add("娱乐"); list.add("体育"); list.add("军事"); list.add("科技"); list.add("财经"); list.add("时尚"); tabLayout.setupWithViewPager(pager); //设置viewpager适配器 pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { //重写这个方法,将设置每个Tab的标题 @Override public CharSequence getPageTitle(int position) { return list.get(position); } @Override public Fragment getItem(int position) { //一般我们在这个位置对比一下标题是什么,,,然后返回对应的fragment //初始化fragment 对应position有多少,fragment有多少 NewFragment newFragment = new NewFragment(); Bundle bundle = new Bundle(); if (list.get(position).equals("头条")){ bundle.putString("name","top"); }else if (list.get(position).equals("社会")){ bundle.putString("name","shehui"); }else if (list.get(position).equals("国内")){ bundle.putString("name","guonei"); }else if (list.get(position).equals("国际")){ bundle.putString("name","guoji"); }else if (list.get(position).equals("娱乐")){ bundle.putString("name","yule"); }else if (list.get(position).equals("体育")){ bundle.putString("name","tiyu"); }else if (list.get(position).equals("军事")){ bundle.putString("name","junshi"); }else if (list.get(position).equals("科技")){ bundle.putString("name","keji"); }else if (list.get(position).equals("财经")){ bundle.putString("name","caijing"); }else if (list.get(position).equals("时尚")){ bundle.putString("name","shishang"); } //给fragment 加bundle 数据 //activity与fragment 1.getset,2.接口回调,3.setArguments ,getAraguments newFragment.setArguments(bundle); return newFragment; } @Override public int getCount() { return list.size(); } }); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); } @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.nav_camera) { // Handle the camera action } else if (id == R.id.nav_gallery) { } else if (id == R.id.nav_slideshow) { } else if (id == R.id.nav_manage) { } else if (id == R.id.nav_share) { } else if (id == R.id.nav_send) { } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } } ------------------------------------------------------------------------------------ activity_main.xml中的布局文件
<?xml version="1.0" encoding="utf-8"?> <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:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:openDrawer="start"> <include layout="@layout/app_bar_main" android:layout_width="match_parent" android:layout_height="match_parent" /> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer" /> </android.support.v4.widget.DrawerLayout> -------------------------------------------------------- content_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:id="@+id/content_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.example.wk.yuekao.MainActivity" tools:showIn="@layout/app_bar_main"> <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tab" app:tabGravity="center" app:tabIndicatorColor="#ff0" android:background="#0F0" app:tabSelectedTextColor="#ff0000" app:tabTextColor="#aaa" app:tabMode="scrollable" app:tabIndicatorHeight="4dp" /> <android.support.v4.view.ViewPager android:layout_below="@+id/tab" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/pager" /> </RelativeLayout>
-----------------------------------------------------------------------------
网络请求+刷新数据package com.example.wk.yuekao; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; import com.google.gson.Gson; import com.jwenfeng.library.pulltorefresh.BaseRefreshListener; import com.jwenfeng.library.pulltorefresh.PullToRefreshLayout; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.List; /** * Created by wk on 2017/9/20. */ public class NewFragment extends Fragment { private ListView list; private String aa=""; private PullToRefreshLayout pull; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { //找到布局文件 View v = View.inflate(getActivity(), R.layout.listview, null); //ListView控件 pull = v.findViewById(R.id.pull); list = (ListView)v.findViewById(R.id.list); list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent intent= new Intent(getActivity(),Main2Activity.class); intent.putExtra("name",aa); startActivity(intent); } }); return v; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Bundle bundle = getArguments(); //接收传递过来的值 String string = bundle.getString("name", "top"); //调用解析方法 Jiexi(string); pull.setRefreshListener(new BaseRefreshListener() { @Override public void refresh() { new Handler().postDelayed(new Runnable() { @Override public void run() { pull.finishRefresh(); } },2000); } @Override public void loadMore() { new Handler().postDelayed(new Runnable() { @Override public void run() { pull.finishLoadMore(); } },2000); } }); } //解析方法 private void Jiexi(final String string) { //使用异步 new AsyncTask<String,Integer,String>(){ @Override protected String doInBackground(String... strings) { String str=""; try { URL url = new URL("http://v.juhe.cn/toutiao/index?type="+string+"&key=8c6e9ca2058eaffcc04bcc4c0f5920c6"); HttpURLConnection conne= (HttpURLConnection) url.openConnection(); // http://v.juhe.cn/toutiao/index?type=top&key=8c6e9ca2058eaffcc04bcc4c0f5920c6 conne.setConnectTimeout(5000); conne.setReadTimeout(5000); int responseCode = conne.getResponseCode(); if (responseCode==200){ InputStream in = conne.getInputStream(); byte[] by=new byte[1024]; int len=0; while ((len=in.read(by))!=-1){ str+=new String(by,0,len); } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return str; } @Override protected void onPostExecute(String s) { aa=s; //Gson解析 Gson gson = new Gson(); User user = gson.fromJson(s, User.class); List<User.Result.Data> data = user.getResult().getData(); //listview适配器 Myadpader myadpader = new Myadpader(getActivity(),data); list.setAdapter(myadpader); super.onPostExecute(s); } }.execute(); } } ---------------------------------------------------------------------------listview.xml 布局<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.jwenfeng.library.pulltorefresh.PullToRefreshLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/pull"> <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/list"></ListView> </com.jwenfeng.library.pulltorefresh.PullToRefreshLayout> </LinearLayout>---------------------------------------------------------------
页面一的适配Myadapterpackage com.example.wk.yuekao; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import java.util.ArrayList; import java.util.List; /** * Created by wk on 2017/9/20. */ public class Myadpader extends BaseAdapter{ List<User.Result.Data> data=new ArrayList<User.Result.Data>(); Context context; public Myadpader(Context context, List<User.Result.Data> data) { this.context = context; this.data = data; } private static final int one=0; private static final int two=1; @Override public int getCount() { return data.size(); } @Override public Object getItem(int i) { return data.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { //实现多条目展示 honderone honderone =null; hondertwo hondertwo =null; //获得不同类型的数据 int type = getItemViewType(i); if (view==null) { switch (type) { case one: honderone = new honderone(); //查找布局 view=View.inflate(context, R.layout.one, null); //查找控件 honderone.img= (ImageView) view.findViewById(R.id.img); honderone.name= (TextView) view.findViewById(R.id.name); view.setTag(honderone); break; case two: //查找布局 hondertwo = new hondertwo(); view=View.inflate(context, R.layout.two, null); //查找控件 hondertwo.image1=(ImageView) view.findViewById(R.id.image1); hondertwo.image2=(ImageView) view.findViewById(R.id.image2); hondertwo.image3=(ImageView) view.findViewById(R.id.image3); view.setTag(hondertwo); break; default: break; } } //赋值 switch (type) { case one: //赋值 honderone =(honderone) view.getTag(); honderone.name.setText(data.get(i).getTitle()); DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.img_in) //加载图片时的图片 .showImageForEmptyUri(R.mipmap.img_er) //没有图片资源时的默认图片 .showImageOnFail(R.mipmap.img_on) //加载失败时的图片 .cacheInMemory(true) //启用内存缓存 .cacheOnDisk(true) //启用外存缓存 .considerExifParams(true) //启用EXIF和JPEG图像格式 .displayer(new RoundedBitmapDisplayer(20)) //设置显示风格这里是圆角矩形 .build(); //给图片赋值 第一个参数图片的 url路径 第二个参数 控件 ImageLoader.getInstance().displayImage(data.get(i).getThumbnail_pic_s(),honderone.img); break; case two: hondertwo=(hondertwo) view.getTag(); //给图片赋值 第一个参数图片的 url路径 第二个参数 控件 ImageLoader.getInstance().displayImage(data.get(i).getThumbnail_pic_s(), hondertwo.image1); ImageLoader.getInstance().displayImage(data.get(i).getThumbnail_pic_s02(), hondertwo.image2); ImageLoader.getInstance().displayImage(data.get(i).getThumbnail_pic_s03(), hondertwo.image3); break; default: break; } return view; } //实现俩个方法 getItemViewType(int position) 和 getViewTypeCount() @Override public int getItemViewType(int position) { //进行判断 摸除 int aa=position%2; //如果等等于0走if 否则 走else if (aa==0) { return one; }else{ return two; } } //第二个方法 @Override public int getViewTypeCount() { // TODO Auto-generated method stub return 2; } //优化布局1 class honderone{ TextView name; ImageView img; } //优化布局2 class hondertwo{ ImageView image1; ImageView image2; ImageView image3; } }-------------------------------------------------
跳转到的Main2Activity+加载网络图片+
package com.example.wk.yuekao; import android.content.Context; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.GridView; import android.widget.ImageView; import android.widget.ListView; import android.widget.Toast; import com.bigkoo.convenientbanner.ConvenientBanner; import com.bigkoo.convenientbanner.holder.CBViewHolderCreator; import com.bigkoo.convenientbanner.holder.Holder; import com.bigkoo.convenientbanner.listener.OnItemClickListener; import com.bumptech.glide.Glide; import com.google.gson.Gson; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Main2Activity extends AppCompatActivity { private String[] images = { "http://img2.3lian.com/2014/f2/37/d/40.jpg", "http://img2.3lian.com/2014/f2/37/d/39.jpg", "http://www.8kmm.com/UploadFiles/2012/8/201208140920132659.jpg", "http://f.hiphotos.baidu.com/image/h%3D200/sign=1478eb74d5a20cf45990f9df460b4b0c/d058ccbf6c81800a5422e5fdb43533fa838b4779.jpg", "http://f.hiphotos.baidu.com/image/pic/item/09fa513d269759ee50f1971ab6fb43166c22dfba.jpg" }; //轮播下面的小点(小圆点是本地的,自己导入的图片) private int[] indicator = {R.drawable.a, R.drawable.b}; // List<User.Result.Data> data=new ArrayList<User.Result.Data>(); private ConvenientBanner convenientBanner; //图片加载地址的集合 private List<String> bean; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); convenientBanner = (ConvenientBanner) findViewById(R.id.convenientBanner); GridView gridView= (GridView) findViewById(R.id.gridview); ListView listview= (ListView) findViewById(R.id.listview); String name = getIntent().getStringExtra("name"); Gson gson = new Gson(); User user = gson.fromJson(name, User.class); List<User.Result.Data> data = user.getResult().getData(); My2adapter my2adapter = new My2adapter(data, Main2Activity.this); gridView.setAdapter(my2adapter); listview.setAdapter(my2adapter); bean = Arrays.asList(images); convenientBanner.setPointViewVisible(true) //设置小点 .setPageIndicator(indicator); //允许手动轮播 convenientBanner.setManualPageable(true); //设置自动轮播的时间 convenientBanner.startTurning(2000); //设置点击事件 //泛型为具体实现类ImageLoaderHolder convenientBanner.setPages(new CBViewHolderCreator<NetImageLoadHolder>() { @Override public NetImageLoadHolder createHolder() { return new NetImageLoadHolder(); } }, bean); //设置每个pager的点击事件 convenientBanner.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(int position) { Toast.makeText(Main2Activity.this, "点击了" + convenientBanner.getCurrentItem(), Toast.LENGTH_SHORT).show(); } }); } public class NetImageLoadHolder implements Holder<String> { private ImageView image_lv; //可以是一个布局也可以是一个Imageview @Override public ImageView createView(Context context) { image_lv = new ImageView(context); image_lv.setScaleType(ImageView.ScaleType.FIT_XY); return image_lv; } @Override public void UpdateUI(Context context, int position, String data) { //Glide框架 Glide.with(context).load(data).into(image_lv); } } }--------------------------------------------------------------
activity_main2.xml布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/activity_main2" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.wk.yuekao.Main2Activity"> <com.bigkoo.convenientbanner.ConvenientBanner android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/convenientBanner" app:canLoop="true"></com.bigkoo.convenientbanner.ConvenientBanner> <GridView android:id="@+id/gridview" android:layout_width="match_parent" android:layout_height="200dp" android:numColumns="4" android:columnWidth="80dp" android:stretchMode="columnWidth" android:layout_below="@+id/convenientBanner" android:layout_alignParentStart="true"></GridView> <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/listview"></ListView> </LinearLayout>