需要的依赖:
compile project(':mylibrary') compile 'com.google.code.gson:gson:2.2.4' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'主类布局DrawerLayout和ViewPager:
<?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:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.bwei.ssp.my_yk.MainActivity" android:id="@+id/layout" > <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" android:id="@+id/lv" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="9" android:id="@+id/vp" /> <RadioGroup android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" android:id="@+id/rg" android:gravity="center" > <RadioButton android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:id="@+id/b1" android:button="@null" android:text="首页" /> <RadioButton android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:id="@+id/b2" android:button="@null" android:text="自选" /> <RadioButton android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:id="@+id/b3" android:button="@null" android:text="行情" /> <RadioButton android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:id="@+id/b4" android:button="@null" android:text="咨询" /> <RadioButton android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:id="@+id/b5" android:button="@null" android:text="交易" /> </RadioGroup> </LinearLayout> </android.support.v4.widget.DrawerLayout>侧栏布局:
<?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" android:orientation="vertical" android:gravity="center_horizontal" android:background="#00f" > <ImageView android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:background="@mipmap/ic_launcher" android:layout_marginTop="30dp" /> <TextView android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:text="客服热线" android:layout_marginTop="200dp" android:textColor="#00ffff" /> <TextView android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:text="营业部网点" android:layout_marginTop="50dp" android:textColor="#00ffff" /> <TextView android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:text="系统设置" android:layout_marginTop="50dp" android:textColor="#00ffff" /> <TextView android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:text="换肤" android:layout_marginTop="50dp" android:textColor="#00ffff" /> <TextView android:layout_width="match_parent" android:layout_height="250dp" /> </LinearLayout>
主类代码:
package com.bwei.ssp.my_yk; import android.os.Bundle; 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.support.v4.widget.DrawerLayout; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.RadioGroup; import com.bwei.ssp.my_yk.Fragment.F1; import com.bwei.ssp.my_yk.Fragment.F2; import com.bwei.ssp.my_yk.Fragment.F3; import com.bwei.ssp.my_yk.Fragment.F4; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private ListView lv; private DrawerLayout layout; private ViewPager vp; private RadioGroup rg; private List<Fragment> flist; private PMadapter pMadapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); layout = (DrawerLayout) findViewById(R.id.layout); //获取布局 vp = (ViewPager) findViewById(R.id.vp); rg = (RadioGroup) findViewById(R.id.rg); MAdapter mAdapter = new MAdapter(); lv.setAdapter(mAdapter); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { layout.closeDrawer(lv); //谁在当点击侧栏条目时关闭 } }); flist = new ArrayList<>(); flist.add(new F1()); flist.add(new F2()); flist.add(new F3()); flist.add(new F4()); //为ViewPager 添加页面 pMadapter = new PMadapter(getSupportFragmentManager()); vp.setAdapter(pMadapter); rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup,int checkedId) { switch (checkedId){ case R.id.b1: vp.setCurrentItem(0); break; case R.id.b2: vp.setCurrentItem(1); break; case R.id.b3: vp.setCurrentItem(2); break; case R.id.b4: vp.setCurrentItem(3); break; } } }); } private class MAdapter extends BaseAdapter{ @Override public int getCount() { return 1; } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public View getView(int i, View view, ViewGroup viewGroup) { view =View.inflate(MainActivity.this,R.layout.ditem,null); //为侧栏设置数据 return view; } } private class PMadapter extends FragmentPagerAdapter{ public PMadapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return flist.get(position); } @Override public int getCount() { return flist.size(); } } }主子页面布局
HorizontalScrollView +viewpager
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <HorizontalScrollView android:id="@+id/hsv" android:layout_width="wrap_content" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/ll_head" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" > </LinearLayout> </HorizontalScrollView> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="wrap_content" android:layout_height="wrap_content" > </android.support.v4.view.ViewPager> </LinearLayout>子类主页面:
package com.bwei.ssp.my_yk.Fragment; import android.graphics.Color; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.HorizontalScrollView; import android.widget.LinearLayout; import android.widget.TextView; import com.bwei.ssp.my_yk.R; import java.util.ArrayList; /** * Created by lenovo on 2017/10/19. */ public class F4 extends Fragment implements View.OnClickListener { private LinearLayout ll_head; private HorizontalScrollView horizontalScrollView; private ViewPager viewPager; private String[] titles; private ArrayList<TextView> textViewList; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v = View.inflate(getActivity(), R.layout.f4, null); ll_head = (LinearLayout) v.findViewById(R.id.ll_head); horizontalScrollView = (HorizontalScrollView) v.findViewById(R.id.hsv); viewPager = (ViewPager)v.findViewById(R.id.viewpager); titles = new String[] { "沪深", "板块", "指数", "港股", "新三板", "商品", "更多" }; textViewList = new ArrayList<TextView>(); for (int i = 0; i < titles.length; i++) { TextView textView = new TextView(getActivity()); textView.setText(titles[i]); // textView.setWidth(100); textView.setTextSize(20); if (i == 0) { textView.setTextColor(Color.RED); } else { textView.setTextColor(Color.BLACK); } // 顺便点击事件 textView.setOnClickListener(this); // 定义id textView.setId(i + 10000); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); params.setMargins(20, 10, 20, 10); ll_head.addView(textView, params); // 往集合中添加textView textViewList.add(textView); } viewPager.setAdapter(new FragmentPagerAdapter( getActivity().getSupportFragmentManager()) { @Override public int getCount() { return titles.length; } @Override public Fragment getItem(int position) { return Fragment0.getInstance(titles[position]); } }); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int position) { for (int i = 0; i < textViewList.size(); i++) { if (position == i) { textViewList.get(i).setTextColor(Color.RED); } else { textViewList.get(i).setTextColor(Color.BLACK); } } TextView textView = textViewList.get(position); int width = textView.getWidth(); // 计算该滑到什么位置 horizontalScrollView.scrollTo((width + 20) * position, 0); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); return v; } @Override public void onClick(View view) { int id = view.getId(); viewPager.setCurrentItem(id - 10000); } }viewpager的页面是一个 根据传递的数据加载不同的页面 需要用到:
接收页面传递的数据
package com.bwei.ssp.my_yk.Fragment; import android.os.Bundle; import android.support.v4.app.Fragment; public class Fragment0 extends BaseFragment { public static Fragment getInstance(String title) { Fragment0 fragment0 = new Fragment0(); Bundle args = new Bundle(); args.putString("args", title); fragment0.setArguments(args); return fragment0; } }
根据数据加载不同的页面
package com.bwei.ssp.my_yk.Fragment; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.bwei.ssp.my_yk.Bean; import com.bwei.ssp.my_yk.R; import com.bwei.ssp.mylibrary.Tools; import com.bwei.ssp.mylibrary.View.XListView; import com.google.gson.Gson; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; public class BaseFragment extends Fragment { private TextView textView; private ImageLoader instance; private View v; private XListView xlv; private String url ="http://www.meirixue.com/api.php?c=index&a=index"; private List<Bean.DataBean.IndexothersBean> indexothers ; private Madapter madapter; private String imgurl="http://pic.ibaotu.com/00/26/65/26N888piCCIm.jpg-0.jpg!ww700"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { instance = ImageLoader.getInstance(); Bundle arguments = getArguments(); String args = (String) arguments.get("args"); //接收穿过来的数据 if(args.equals("沪深")){ //判断是否是主界面 v = View.inflate(getActivity(), R.layout.xf1,null); xlv = (XListView)v.findViewById(R.id.xlv); xlv.setPullLoadEnable(true); xlv.setXListViewListener(new XListView.IXListViewListener() { @Override public void onRefresh() { indexothers.clear(); initData(); xListViewUIComplete(); } @Override public void onLoadMore() { initData(); xListViewUIComplete(); } }); initData(); madapter = new Madapter(); return v; }else { textView = new TextView(getActivity()); textView.setText(args); return textView; } } private void xListViewUIComplete() { XListView xListView; xlv.stopRefresh(); //让加载更多文字消失 xlv.stopLoadMore(); //设置刷新时间为"刚刚" xlv.setRefreshTime("刚刚"); } private void initData() { new MAsyzTask().execute(url); } private class MAsyzTask extends AsyncTask<String ,Void,String>{ @Override protected String doInBackground(String... strings) { return Tools.getJson(strings[0]); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); indexothers= bean.getData().getIndexothers(); xlv.setAdapter(madapter); } } private class Madapter extends BaseAdapter{ @Override public int getCount() { return indexothers.size(); } @Override public Object getItem(int i) { return indexothers.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { view =View.inflate(getActivity(),R.layout.xitem,null); TextView tv =(TextView) view.findViewById(R.id.tv); ImageView ig =(ImageView) view.findViewById(R.id.ig); tv.setText(indexothers.get(i).getCourse_name()); instance.displayImage(imgurl,ig); return view; } } }