使用ViewPager实现自动轮播+小圆点
2017-09-14 07:57
501 查看
/*
*activity_main
*/
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_main" 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="6"> <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/lv" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="4" /> </LinearLayout>/*
*doc_select
*/
<?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 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
*/
import android.os.AsyncTask; import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import android.widget.LinearLayout; import com.bawei.adapter.MyPagerAdapter; import com.bawei.bean.NewsListBean; import com.bawei.bean.SuperClass; import com.bawei.utils.NetWorkUtil; import com.bawei.utils.URLDB; import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private ViewPager viewPager; private LinearLayout dotContainer; private NetWorkUtil netWorkUtil; private List<String> list; 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,2000); } } }; private List<ImageView> imgList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { viewPager = (ViewPager) findViewById(R.id.viewPager); dotContainer = (LinearLayout) findViewById(R.id.dotCantainer); netWorkUtil = new NetWorkUtil(); new AsyncTask<String,Integer,String>(){ @Override protected String doInBackground(String... params) { String param = params[0]; String jsonStr = netWorkUtil.getJsonHttpURLConnectionGet(param); return jsonStr; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); //解析数据 SuperClass superClass = new Gson().fromJson(s, SuperClass.class); List<NewsListBean> newslist = superClass.getNewslist(); list = new ArrayList<String>(); for (int i=0;i<newslist.size();i++){ list.add(newslist.get(i).getPicUrl()); } //初始化小圆点 initDoc(); MyPagerAdapter myPagerAdapter = new MyPagerAdapter(MainActivity.this,list); viewPager.setAdapter(myPagerAdapter); viewPager.setCurrentItem(list.size()*10000); handler.sendEmptyMessageDelayed(0,2000); 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(URLDB.JSON_URL); } private void initDoc() { imgList = new ArrayList<>(); dotContainer.removeAllViews(); for (int i=0;i<list.size();i++){ ImageView imageView = new ImageView(MainActivity.this); 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.bawei.adapter; 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.ArrayList; import java.util.List; /** * Created by dell on 2017-09-12. */ 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 void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public Object instantiateItem(ViewGroup container, int position) { //创建ImageView对象 ImageView img = new ImageView(context); img.setScaleType(ImageView.ScaleType.FIT_XY); //加载图片 ImageLoader.getInstance().displayImage(list.get(position%list.size()),img); container.addView(img); return img; } }
/*
*MyApplication
*/
package com.bawei.mapp; import android.app.Application; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; /** * Created by dell on 2017-09-12. */ public class MyApplication extends Application{ @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this) .memoryCacheExtraOptions(200,400) .build(); ImageLoader.getInstance().init(configuration); } }
相关文章推荐
- Android使用viewpager实现自动无限轮播图
- Android使用ViewPager实现图片轮播(高度自适应,左右循环,自动轮播)
- 使用ViewPager实现自动轮播
- 使用ViewPager实现自动无限循环的轮播
- 使用ViewPager实现自动轮播
- 使用自制绘图实现viewpager无限轮播的小圆点
- android TV开发:使用ViewPager实现图片自动轮播效果
- android ViewPager实现自动无限轮播和下方向导圆点
- Android使用ViewPager实现自动轮播
- 如何实现viewpager自动轮播
- Android使用ViewPager实现左右循环滑动及轮播效果
- Android 使用ViewPager自动滚动循环轮播效果
- Android使用ViewPager实现左右循环滑动及轮播效果
- Android使用ViewPager实现左右循环滑动及轮播效果
- Android使用ViewPager实现左右循环滑动及轮播效果
- Android使用ViewPager实现左右循环滑动及轮播效果
- ViewPager+Handler实现图片自动轮播的效果
- viewFlipper的使用实现自动轮播广告图片
- ViewPager实现广告自动轮播核心代码(Handler+Thread)
- ViewFlipper的使用---自动播放(轮播图)的实现以及多个view进行切换