1.概述 小圆点的运用,自定义的要比RadioGroup的好看的多、
2.思路 创建一个空的LinearLayout往里面添加自己定义好的圆形的imagesView
3.代码如下
布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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: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.guojinlong20170826.MainActivity"> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/doc" android:layout_width="match_parent" android:layout_height="40dp" android:gravity="center" android:orientation="horizontal" android:layout_alignParentBottom="true"></LinearLayout> </RelativeLayout>
//自定义圆形的选中和没选中
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#0ff"/> <size android:width="20dp" android:height="20dp"/> <stroke android:color="#0ff" android:width="1dp"/> </shape><?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#fff"/> <size android:width="10dp" android:height="10dp"/> <stroke android:color="#0ff" android:width="1dp"/> </shape>zmainactivity里package com.example.guojinlong20170826; import android.os.AsyncTask; import android.os.Handler; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RadioGroup; import com.bwei.guojinlong.Adapter.MyAdapter; import com.bwei.guojinlong.bean.Data; import com.bwei.guojinlong.utils.Getjson; import com.google.gson.Gson; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { ViewPager vp; LinearLayout doc; Data data; List<ImageView> list; List<ImageView> list_doc; Handler handler=new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); } private void initView() { vp= (ViewPager) findViewById(R.id.vp); doc= (LinearLayout) findViewById(R.id.doc); list=new ArrayList<>(); list_doc=new ArrayList<>(); }一个网络接口的数据源 private void initData() { new AsyncTask<String,String,String>(){ @Override protected String doInBackground(String... strings) { Gson gson=new Gson(); data=gson.fromJson(Getjson.getData("http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9"),Data.class); return null; } @Override protected void onPostExecute(String s) { getImg(); super.onPostExecute(s); } }.execute(); } public void getImg() { if(data!=null&&data.getData().getComics().size()>0){ for (int i = 0; i < data.getData().getComics().size(); i++) { ImageView img=new ImageView(this); img.setScaleType(ImageView.ScaleType.FIT_XY); ImageLoader.getInstance().displayImage(data.getData().getComics().get(i).getCover_image_url(),img); list.add(img); } MyAdapter adpter=new MyAdapter(list); vp.setAdapter(adpter); initDoc(); vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { int index=position%list.size(); for (int i = 0; i < list.size(); i++) { list_doc.get(i).setBackgroundResource(R.drawable.doc_uncheck); } list_doc.get(index).setBackgroundResource(R.drawable.doc_check); } @Override public void onPageScrollStateChanged(int state) { } }); } handler.postDelayed(new Runnable() { @Override public void run() { int de=vp.getCurrentItem(); de++; vp.setCurrentItem(de); handler.postDelayed(this,2000); } },2000); } public void initDoc() { if (data != null && data.getData().getComics().size() > 0) { for (int i = 0; i < data.getData().getComics().size(); i++) { ImageView img = new ImageView(this); LinearLayout.LayoutParams params = new RadioGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.rightMargin = 10; img.setLayoutParams(params); if (i == 0) { img.setBackgroundResource(R.drawable.doc_check); } else { img.setBackgroundResource(R.drawable.doc_uncheck); } doc.addView(img); list_doc.add(img); } } } }