/////////////////////////////////////////////布局 //两个布局 复制
<RelativeLayout android:layout_width="match_parent" android:layout_height="200dp"> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="wrap_content" android:layout_height="200dp"></android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/sll" android:gravity="center" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> </LinearLayout> </RelativeLayout>
///////////////////////////////////////////////代码
package com.example.wuxianlunbo; import android.os.Handler; import android.os.Message; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import com.google.gson.Gson; import com.nostra13.universalimageloader.core.ImageLoader; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { String path="http://www.meirixue.com/api.php?c=index&a=index"; private ViewPager vp; private List<User.DataBean.AdlistBean> adlist; private Madapter madapter; private ArrayList<ImageView> ivlist; private ImageView iv; private LinearLayout sll; //主线程 Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { int what=msg.what; switch (what){ case 0: Object obj = msg.obj;//取出值 String s = obj.toString(); Gson gson = new Gson(); User user = gson.fromJson(s, User.class); adlist = user.getData().getAdlist(); //添加适配器 madapter = new Madapter(); vp.setAdapter(madapter); initdote();//点点点///////////////////////////////////// //设置延时 vp.setCurrentItem(1000); handler.sendEmptyMessageDelayed(1,2000); ViewPagerLister();//根据图片动选中的也跟着动 break; case 1: int currentItem = vp.getCurrentItem(); currentItem++; vp.setCurrentItem(currentItem); handler.sendEmptyMessageDelayed(1,2000);//延时 break; } } // viewpager的滑动监听事件 private void ViewPagerLister() { vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener(){ @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for(int x=0;x<ivlist.size();x++){ if (position%adlist.size()==x){ //证明点和图片是对应的,应该点是变红的 ivlist.get(position%adlist.size()).setImageResource(R.drawable.dot_focuable); }else{ ivlist.get(x).setImageResource(R.drawable.dot_normal); } } } @Override public void onPageScrollStateChanged(int state) { } }); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vp =(ViewPager)findViewById(R.id.vp); sll = (LinearLayout)findViewById(R.id.sll); init();//添加数据 } //初始化点 private void initdote() { ivlist = new ArrayList<>(); if (ivlist!=null){ ivlist.clear(); } for (int i= 0; i <adlist.size() ; i++) { iv = new ImageView(MainActivity.this); if (i==0){ //第一张,让其圆点进行选中状态 iv.setImageResource(R.drawable.dot_focuable); }else{ //其它的都不选中 iv.setImageResource(R.drawable.dot_normal); } LinearLayout.LayoutParams parmas = new LinearLayout.LayoutParams(20, 20); //设置两个点之间的距离 parmas.setMargins(10,0,10,0); sll.addView(iv,parmas); ivlist.add(iv); } } private void init() { //子线程 new Thread(){ @Override public void run() { try { URL url = new URL(path); HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection(); int responseCode = urlConnection.getResponseCode(); if (responseCode==200){ InputStream inputStream = urlConnection.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder builder = new StringBuilder(); String string=""; while ((string=bufferedReader.readLine())!=null){ builder.append(string); } String s = builder.toString(); //创建 Message me = new Message(); me.obj=s; me.what=0; handler.sendMessage(me); } } catch (Exception e) { e.printStackTrace(); } } }.start(); } //ViewPager的适配器 class Madapter extends PagerAdapter{ @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 img = new ImageView(MainActivity.this); img.setScaleType(ImageView.ScaleType.FIT_XY);//缩放 ImageLoader.getInstance().displayImage(adlist.get(position%adlist.size()).getImg(),img); container.addView(img); return img; } @Override//销毁 public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View)object); } } }
本文介绍了一种基于Android平台的轮播图实现方法,通过使用ViewPager进行图片展示,并结合Handler实现图片自动轮播效果。文章详细讲解了如何加载外部图片资源、设置图片切换动画以及实现底部指示点等功能。
485

被折叠的 条评论
为什么被折叠?



