activity_main.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" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.bw.yuekao_lainxi.MainActivity"> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"/> <RadioGroup android:id="@+id/rg" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="9" android:orientation="horizontal"> <RadioButton android:id="@+id/rb1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:button="@null" android:gravity="center" android:textSize="20sp" android:text="我的"/> <RadioButton android:id="@+id/rb2" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:button="@null" android:gravity="center" android:textSize="20sp" android:text="信息"/> <RadioButton android:id="@+id/rb3" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:button="@null" android:gravity="center" android:textSize="20sp" android:text="中心"/> <RadioButton android:id="@+id/rb4" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:button="@null" android:gravity="center" android:textSize="20sp" android:text="我的"/> </RadioGroup> </LinearLayout>
fragment1.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/lv" android:layout_width="240sp" android:layout_height="match_parent" android:layout_gravity="start" android:background="#fff" android:choiceMode="singleChoice" android:divider="#f00" android:dividerHeight="1dp" android:entries="@array/books" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="7"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" /> <LinearLayout android:id="@+id/dotContainer" android:layout_width="match_parent" android:layout_height="40dp" android:layout_alignParentBottom="true" android:gravity="center" android:orientation="horizontal" /> </RelativeLayout> <ListView android:id="@+id/lv1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="3" /> </LinearLayout> </android.support.v4.widget.DrawerLayout>
doc_select.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <size android:width="10dp" android:height="10dp" /> <solid android:color="#ff0000" /> <corners android:radius="5dp" /> </shape>
doc_select_no.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <size android:width="10dp" android:height="10dp" /> <solid android:color="#00ff00" /> <corners android:radius="5dp" /> </shape>
MainActivity
package com.bw.yuekao_lainxi; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.RadioButton; import android.widget.RadioGroup; import com.bw.fragment.Fragment01; import com.bw.fragment.Fragment02; import com.bw.fragment.Fragment03; import com.bw.fragment.Fragment04; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private List<Fragment> listFrag = new ArrayList<>(); private Fragment01 fragment01 = new Fragment01(); private Fragment02 fragment02 = new Fragment02(); private Fragment03 fragment03 = new Fragment03(); private Fragment04 fragment04 = new Fragment04(); private ViewPager pager; private RadioGroup rg; private RadioButton rb1,rb2,rb3,rb4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listFrag.add(fragment01); listFrag.add(fragment02); listFrag.add(fragment03); listFrag.add(fragment04); pager = (ViewPager) findViewById(R.id.pager); rg = (RadioGroup) findViewById(R.id.rg); pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { return listFrag.get(position); } @Override public int getCount() { return listFrag.size(); } }); pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { switch (position){ case 0: rg.check(R.id.rb1); break; case 1: rg.check(R.id.rb2); break; case 2: rg.check(R.id.rb3); break; case 3: rg.check(R.id.rb4); break; } } @Override public void onPageScrollStateChanged(int state) { } }); rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId){ case R.id.rb1: pager.setCurrentItem(0); break; case R.id.rb2: pager.setCurrentItem(1); break; case R.id.rb3: pager.setCurrentItem(2); break; case R.id.rb4: pager.setCurrentItem(3); break; } } }); } }Fragment01第一个Fragmentpackage com.bw.fragment; import android.os.AsyncTask; import android.os.Handler; import android.os.Message; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import com.bw.adapter.MyPagerAdapter; import com.bw.bean.ComicsBean; import com.bw.bean.DataBean; import com.bw.bean.SuperClass; import com.bw.utils.NetWork; import com.bw.yuekao_lainxi.R; import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; /** * Created by */ public class Fragment01 extends Fragment { private static final String JSON = ""; private DrawerLayout drawerLayout; private ListView lv,lv1; private ViewPager viewPager; private MyPagerAdapter pagerAdapter; private List<ComicsBean> listPager; private LinearLayout dotContainer; private NetWork netWork = new NetWork(); private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 0){ int currentItem = viewPager.getCurrentItem(); viewPager.setCurrentItem(currentItem+1); handler.sendEmptyMessageDelayed(0,3000); } } }; private List<ImageView> imgList; private List<String> list = new ArrayList<>(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment1, null); lv = (ListView) view.findViewById(R.id.lv); lv1 = (ListView) view.findViewById(R.id.lv1); viewPager = (ViewPager) view.findViewById(R.id.viewPager); dotContainer = (LinearLayout) view.findViewById(R.id.dotContainer); init(); return view; } private void init() { new AsyncTask<String,Integer,String>(){ @Override protected String doInBackground(String... params) { String jsonStr = netWork.getStringJson(JSON); return jsonStr; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); //解析数据 SuperClass superClass = new Gson().fromJson(s, SuperClass.class); DataBean data = superClass.getData(); listPager = data.getComics(); list.clear(); for (int i=0;i<listPager.size();i++){ list.add(listPager.get(i).getCover_image_url()); } //初始化小圆点 initDoc(); pagerAdapter = new MyPagerAdapter(getActivity(),list); viewPager.setAdapter(pagerAdapter); viewPager.setCurrentItem(list.size()*10000); handler.sendEmptyMessageDelayed(0,3000); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int i=0;i<imgList.size();i++){ if (i == position%imgList.size()){ imgList.get(i).setImageResource(R.drawable.doc_select); }else { imgList.get(i).setImageResource(R.drawable.doc_select_no); } } } @Override public void onPageScrollStateChanged(int state) { } }); } }.execute(); } private void initDoc() { imgList = new ArrayList<>(); dotContainer.removeAllViews(); imgList.clear(); for (int i=0;i<list.size();i++){ ImageView imageView = new ImageView(getActivity()); if (i == 0){ imageView.setImageResource(R.drawable.doc_select); }else { imageView.setImageResource(R.drawable.doc_select_no); } //添加到集合 imgList.add(imageView); //添加到线性布局 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT); params.setMargins(5,0,5,0); dotContainer.addView(imageView,params); } } }MyPagerAdapter自动轮播适配器package com.bw.adapter; import android.content.Context; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.widget.ImageView; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; /** * Created by on 2017/9/21. */ public class MyPagerAdapter extends PagerAdapter { private Context context; private List<String> list; public MyPagerAdapter(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; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageView = new ImageView(context); imageView.setScaleType(ImageView.ScaleType.FIT_XY); //加载图片 ImageLoader.getInstance().displayImage(list.get(position%list.size()),imageView); ViewParent parent = imageView.getParent(); if(parent != null){ ViewGroup viewGroup = (ViewGroup) parent; viewGroup.removeAllViews(); } container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }工具类:解析数据package com.bw.utils; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; /** * Created by */ public class NetWork { //HttpURLConnection解析Json数据 public String getStringJson(String jsonUrl){ //声明 URL url = null; HttpURLConnection httpURLConnection = null; InputStream inputStream = null; String str = ""; try { //获取网址 url = new URL(jsonUrl); //打开网址 httpURLConnection = (HttpURLConnection) url.openConnection(); //获取请求码 int code = httpURLConnection.getResponseCode(); //判断请求码 if (code == 200){ //解析 inputStream = httpURLConnection.getInputStream(); byte[] b = new byte[1024]; int len = 0; //循环解析 while ((len = inputStream.read(b)) != -1){ str += new String(b,0,len); } } } catch (Exception e) { e.printStackTrace(); } finally { if (inputStream != null){ try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } return str; } }工具类:解析图片package com.bw.utils; import android.app.Application; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; /** * Created by */ public class ImageWork extends Application { @Override public void onCreate() { super.onCreate(); //创建ImageLoaderConfiguration ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this) .memoryCacheExtraOptions(200,400) .build(); //初始化ImageLoader ImageLoader.getInstance().init(config); } }