小点的实现是自定义的view,监听viewpager的滑动而改变背景颜色,实现小点跟着动的效果
两个自定义的xml
1 dot_focused
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<corners android:radius="5dip" /><!-- 背景的填充颜色 -->
<solid android:color="#aaFFFFFF" /><!-- 边角圆弧的半径 -->
</shape>
2 dot_normal
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<corners android:radius="5dip" />
<solid android:color="#55000000" />
</shape>
—————-布局——————
<android.support.v4.view.ViewPager
android:id="@+id/f1_vp"
android:layout_below="@id/rl_1"
android:layout_width="match_parent"
android:layout_height="180dp"
/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/f1_vp"
android:layout_marginTop="-30dp"
android:layout_alignParentRight="true"
android:layout_marginRight="20dp"
android:orientation="horizontal">
<View
android:id="@+id/dot_1"
android:layout_width="10dip"
android:layout_height="10dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal" />
<View
android:id="@+id/dot_2"
android:layout_width="10dip"
android:layout_height="10dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal" />
<View
android:id="@+id/dot_3"
android:layout_width="10dip"
android:layout_height="10dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal" />
<View
android:id="@+id/dot_4"
android:layout_width="10dip"
android:layout_height="10dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal" />
<View
android:id="@+id/dot_5"
android:layout_width="10dip"
android:layout_height="10dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal" />
<View
android:id="@+id/dot_6"
android:layout_width="10dip"
android:layout_height="10dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal" />
<View
android:id="@+id/dot_7"
android:layout_width="10dip"
android:layout_height="10dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal" />
<View
android:id="@+id/dot_8"
android:layout_width="10dip"
android:layout_height="10dip"
android:layout_marginLeft="2dip"
android:layout_marginRight="2dip"
android:background="@drawable/dot_normal" />
</LinearLayout>
—————适配器————-
import android.content.Context;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.lidroid.xutils.BitmapUtils;
import java.util.List;
import yunifang.bawei.administrator.yunifang.homebean.Ad1;
/**
* Created by Administrator on 2016-9-6.
*/
public class LuenBoAdapter extends PagerAdapter {
private final Context context;
private List<Ad1> ad1;
private BitmapUtils utils;
public LuenBoAdapter(Context context, List<Ad1> ad1) {
this.context = context;
this.ad1 = ad1;
utils=new BitmapUtils(context);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
String img=ad1.get(position%ad1.size()).getImage();
ImageView imgview=new ImageView(context);
utils.display(imgview,img);
//填充整个布局
imgview.setScaleType(ImageView.ScaleType.FIT_XY);
//得到布局参数对象
ViewPager.LayoutParams layoutParams=new ViewPager.LayoutParams();
//设置高为填充父窗体
layoutParams.width= ViewPager.LayoutParams.MATCH_PARENT;
layoutParams.height= ViewPager.LayoutParams.MATCH_PARENT;
//设置imageview的参数
imgview.setLayoutParams(layoutParams);
container.addView(imgview);
return imgview;
}
@Override
public int getCount() {
return 10000;
}
@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);
}
}
——fragment或者activity中的代码————–
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.gson.Gson;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import yunifang.bawei.administrator.yunifang.Adapter.LuenBoAdapter;
import yunifang.bawei.administrator.yunifang.R;
import yunifang.bawei.administrator.yunifang.homebean.Ad1;
import yunifang.bawei.administrator.yunifang.homebean.HomeBean;
/**
* Created by Administrator on 2016-9-6.
*/
public class F1Fragment extends Fragment {
String jiekou="http://m.yunifang.com/yunifang/mobile/home?random=17257&encode=56f7b9f64804f3c6423bb3ee62eab517";
private ViewPager vp;
private View dot1,dot2,dot3,dot4,dot5,dot6,dot7,dot8;
private List<View> dots=new ArrayList<View>();
private int oldPosition = 0;// 记录上一次点的位置
private int currentItem; // 当前页面
// int[] imgs=new int[]{
// R.mipmap.lunbo1,R.mipmap.lunbo2,R.mipmap.lunbo3,R.mipmap.lunbo4,R.mipmap.lunbo5,R.mipmap.lunbo1,R.mipmap.lunbo2,R.mipmap.lunbo3
// };
private List<Ad1> ad1;
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int i=msg.what;
if (i==0){
HomeBean homeBean= (HomeBean) msg.obj;
ad1 = homeBean.getData().getAd1();
vp.setAdapter(new LuenBoAdapter(getActivity(),ad1));
vp.setCurrentItem(10000/2-10000/2%ad1.size());
handler.sendEmptyMessageDelayed(2,2000);
dots.get(0).setBackgroundResource(R.drawable.dot_focused);
}else if (i == 2){
//得到当前位置
int currentItem=vp.getCurrentItem();
vp.setCurrentItem(currentItem += 1);
//继续发送
handler.sendEmptyMessageDelayed(2,3000);
}
//对viewpager滑动进行监听
//设置第一个点为选中
vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
dots.get(oldPosition).setBackgroundResource(
R.drawable.dot_normal);
dots.get(position%ad1.size())
.setBackgroundResource(R.drawable.dot_focused);
oldPosition = position%ad1.size();
currentItem = position;
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return View.inflate(getActivity(), R.layout.f1,null);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
vp= (ViewPager) getActivity().findViewById(R.id.f1_vp);
dot1=getActivity().findViewById(R.id.dot_1);
dot2=getActivity().findViewById(R.id.dot_2);
dot3=getActivity().findViewById(R.id.dot_3);
dot4=getActivity().findViewById(R.id.dot_4);
dot5=getActivity().findViewById(R.id.dot_5);
dot6=getActivity().findViewById(R.id.dot_6);
dot7=getActivity().findViewById(R.id.dot_7);
dot8=getActivity().findViewById(R.id.dot_8);
dots.add(dot1);
dots.add(dot2);
dots.add(dot3);
dots.add(dot4);
dots.add(dot5);
dots.add(dot6);
dots.add(dot7);
dots.add(dot8);
getdata();//请求数据
}
//请求数据
private void getdata(){
new Thread(){
@Override
public void run() {
try {
URL url=new URL(jiekou);
HttpURLConnection conn= (HttpURLConnection) url.openConnection();
InputStream inputStream = conn.getInputStream();
//解析
Gson gson=new Gson();
HomeBean homeBean = gson.fromJson(new InputStreamReader(inputStream), HomeBean.class);
Message msg=Message.obtain();
msg.what=0;
msg.obj=homeBean;
handler.sendMessage(msg);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
}